jwtSso-1.0 フィーチャーを使用すると、Liberty サーバーを構成して
JSON Web Token (JWT) をシングル・サインオン (SSO) Cookie として使用します。 オプションで、
フィーチャーの動作をカスタマイズし、JWT の作成方法を変更できます。
このタスクについて
JWT SSO Cookie は、jwtSso-1.0 フィーチャーを使用可能にすることで構成されます。 ユーザーが認証されると、 Liberty は署名付き JWT を SSO Cookie として作成し、ブラウザーに返します。 その後、ブラウザーは、 Liberty サーバーへの後続の要求に JWT Cookie を組み込むことができます。
重要: JWT Cookie には、認証されたユーザーおよびグループに関する情報が含まれています。 コンテンツは署名されていますが暗号化されていません。 ユーザーとグループ ID の公開を避けるには、
このフィーチャーを使用して保護された (HTTPS) 通信を使用します。
JWT は RS256 署名方式を使用したサーバーの秘密鍵を使用して署名され、
120 分の存続期間があります。
JWT SSO Cookie をカスタマイズできます。 JWT Cookie のカスタマイズについて詳しくは、 jwtSso フィーチャーを参照してください。
手順
- フィーチャー・マニフェストに jwtSso-1.0 フィーチャーを追加します。
<featureManager>
<feature>jwtSso-1.0</feature>
...
</featureManager>
- オプション: server.xml ファイル内の jwtSso エレメントを構成することにより、サンプル内のサンプル値を実際の値に置き換えて、フィーチャーの動作をカスタマイズします。
<jwtSso cookieName="myjwt" jwtBuilderRef="myBuilder"/>
- オプション: jwtBuilderRef 属性を構成して、JWT の作成方法を変更します。
jwtBuilderRef 属性は、サーバー構成内に存在する必要がある jwtBuilder
エレメントを参照します。 jwtBuilder 構成は JWT の作成方法を制御します。 例えば、expiresInSeconds
属性を構成してトークンの有効期限を変更することができます。
<jwtBuilder id="myBuilder" expiresInSeconds="1800"/>
keyStoreRef 属性および keyAlias 属性を以下のように編集して、
JWT 署名鍵を変更します。
<jwtBuilder id="myBuilder" keyStoreRef="mykeyStore"
keyAlias="myJwtSigner"/>
複数のサーバーが JWT Cookie を実行して共有する場合、署名鍵を指定す
る機能は重要です。 各サーバーは、異なるサーバーで発生する可能性のある Cookie
を検証できる必要があります。
発行者の属性を指定して JWT 発行者を変更します。 デフォルトでは、発行者は https://<
hostname>:<
port>/jwt/defaultJwtSso です。 次に例を挙げます。
<jwtBuilder id="myBuilder" issuer="http://server.example.com" />
構成可能な jwtBuilder 属性について詳しくは、 JWT Builderを参照してください。
- オプション: mpJwt エレメントを server.xml ファイルに追加して、JWT 検証基準を変更します。
jwtSso フィーチャーが存在する場合は、自動的に mpJwt エレメントを使用します。 server.xml ファイルに存在できる mpJwt エレメントは 1 つだけです。 次の例では、jwtBuilder 参照を使用してトークンの作成をカスタマイズし、
mpJwt エレメントを使用してトークンの検証と消費をカスタマイズします。
<jwtSso includeLtpaCookie="true" jwtBuilderRef="myBuilder">
<jwtBuilder id="myBuilder" issuer="http://server.example.com" />
<mpJwt id="myMpJwt" issuer="http://server.example.com"
keyName="myJwtSigner"/>
構成可能な mpJwt 属性について詳しくは、 MicroProfile JWTを参照してください。
- オプション: JSON Web Key (JWK) エンドポイントを使用して JWT を検証します。
Liberty が JWT を作成すると、発行者がそれらに署名します。 発行者の公開鍵を使用するコンシューマーは、
後で署名を検証します。 複数のサーバーを使用する場合は、コンシューマーのトラストス
トア・ファイルで発行者の公開鍵を保管する必要があります。 トラストストア・ファイルで発行者の公開鍵を保管する便利な代替方法とし
て、発行者の JWK エンドポイントから公開鍵を取得することができます。
デフォルトの JWK エンドポイントは http(s)://<host>:<port>/jwt/ibm/api/defaultJWT/jwk です。
JWT をコンシュームするために JWK エンドポイントを使用するには、
jwksUri 属性を mpJwt 構成エレメントに追加します。
<mpJwt id="myMpJwt" jwksUri="https://localhost:19443/jwt/ibm/api/defaultJWT/jwk" />
別のビルダーを指定した場合、その JWK エンドポイントは http(s)://<
host>:<
port>/jwt/ibm/api/(builderId)/jwk です。 例えば、以下の jwtSso エレメントには、http(s)://<
host>:<
port>/jwt/ibm/api/myBuilder/jwk という JWK エンドポイントがあります。
<jwtSso jwtBuilderRef="myBuilder"/> <jwtBuilder id="myBuilder" />