クッキー認証
Cookie認証は、HTTP Cookieを使用してクライアントのリクエストを認証し、セッション情報を維持します。その仕組みは以下のとおりです。
- クライアントはサーバーにログインリクエストを送信します。
- ログインが成功すると、サーバーの応答にはCookie名、値、有効期限、その他の情報を含むSet-Cookieヘッダーが含まれます。以下は
JSESSIONID
という名前のCookieを設定する例です。
1Set-Cookie: JSESSIONID=abcde12345; Path=/; HttpOnly
- クライアントは、その後のすべてのサーバーへのリクエストで、このCookieを
Cookie
ヘッダーに含めて送信する必要があります。
1Cookie: JSESSIONID=abcde12345
- ログアウト操作では、サーバーはCookieを期限切れにする
Set-Cookie
ヘッダーを返します。
注: Cookie認証はクロスサイトリクエストフォージェリ (CSRF) 攻撃に対して脆弱であるため、CSRFトークンなどの他のセキュリティ対策と併用する必要があります。
Swagger UIおよびSwagger Editorユーザーへの注意: ブラウザのセキュリティ制限により、「試す」リクエストではCookie認証は現在サポートされていません。この問題については、詳細をご覧ください。SwaggerHubにはこの制限はありません。
Cookie認証の記述
OpenAPI 3.0の用語では、Cookie認証はin: cookie
で送信されるAPIキーです。JSESSIONID
という名前のCookieによる認証は、次のように定義されます。
1openapi: 3.0.42---3# 1) Define the cookie name4components:5 securitySchemes:6 cookieAuth: # arbitrary name for the security scheme; will be used in the "security" key later7 type: apiKey8 in: cookie9 name: JSESSIONID # cookie name10
11# 2) Apply cookie auth globally to all operations12security:13 - cookieAuth: []
この例では、仕様のルートレベルのsecurity
キーを使用して、Cookie認証がAPI全体にグローバルに適用されます。Cookieが一部の操作にのみ必要な場合は、グローバルに適用するのではなく、操作レベルでsecurity
を適用します。
1paths:2 /users:3 get:4 security:5 - cookieAuth: []6 description: Returns a list of users.7 responses:8 "200":9 description: OK
複数の認証タイプの使用で説明されているように、Cookie認証は他の認証方法と組み合わせることができます。
Set-Cookieヘッダーの記述
ログイン操作がSet-Cookie
ヘッダーでCookieを返すことを文書化したい場合もあるでしょう。この情報をdescription
に含め、応答のheaders
にSet-Cookie
ヘッダーを定義することができます。以下に例を示します。
1paths:2 /login:3 post:4 summary: Logs in and returns the authentication cookie5 requestBody:6 required: true7 description: A JSON object containing the login and password.8 content:9 application/json:10 schema:11 $ref: "#/components/schemas/LoginRequest"12 security: [] # no authentication13 responses:14 "200":15 description: >16 Successfully authenticated.17 The session ID is returned in a cookie named `JSESSIONID`. You need to include this cookie in subsequent requests.18 headers:19 Set-Cookie:20 schema:21 type: string22 example: JSESSIONID=abcde12345; Path=/; HttpOnly
Set-Cookie
ヘッダーとsecuritySchemes
はどのような方法でも接続されておらず、Set-Header
の定義はドキュメント作成のみを目的としていることに注意してください。
お探しのものが見つかりませんでしたか? コミュニティに質問する
間違いを見つけましたか? お知らせください