35.4 OAuthトークンに対するSSOセッションのリンク
いくつかのリソースがOAMで保護される一方で、一部がOAuthによってアクセスされるデプロイメント・シナリオにおいて、様々に混在するアプリケーション間でシームレスなSSOを実現するには、SSOセッションをアクセス・トークンにリンクする必要があります。OAuthトークンに対するSSOセッションのリンクでは、ネイティブ・モバイル・アプリケーションおよびOAuthトークンとSSOトークンの同期が含まれる2-leggedフローを必要とするキーOAuthデプロイメントがサポートされます。
ユースケース・フロー
図35-1に、SSOセッションのリンクのユースケース・フローを示します。
SSOセッションのリンクのためのサーバー変更
-
SSOセッションが作成されると、JWTユーザー・トークンも作成されます。JWTユーザー・トークンには、その要求の一部としてSSO "session_id"が含まれます。
-
このJWTトークンの作成は、構成に基づきます。作成したら、このトークンは、Cookieまたはヘッダーとしてダウンストリーム・アプリケーションに送信できます。現在、構成は、スキーム・レベルのチャレンジ・パラメータとして設定されます。
デフォルトでは、SSOリンクJWTトークンはCookieで設定されます。ノート:
OAUTH_TOKEN_RESPONSE_TYPE
がheader
の場合、JWTトークンはCookie名JWTAssertion
で設定されます。OAUTH_TOKEN_RESPONSE_TYPE
がcookie
の場合、JWTトークンはCookie名OAUTH_TOKEN
で設定されます。
図ssolink_challengparam.pngの説明 -
トークン署名: 起動時に、デフォルトのOAuthキー証明書がサーバーにブートストラップされます。JWTトークンは、アイデンティティ・ドメインの秘密キーで署名されます。JWTトークンがアサーションとして受信されると、X5T値がヘッダーから取得され、トークンの検証に使用できる関連する公開キーがフェッチされます。
-
トークンがOAuthトークン・リクエストのJWTベアラー・フローの一部として戻されると、OAMサーバーは、トークンからSSO "session_id"を取得します。
-
有効なセッションのチェック: JWTトークンにセッションIDが含まれる場合、サーバーは、それをSSOのリンクしたJWTトークンであると認識します。それは、トークンから"sessionId"要求を取得し、指定されたIDを持つサーバー・セッションがまだ有効であるかどうかをチェックします。
-
セッションが有効な場合、SSOセッションのサブジェクトが、JWTトークンの"sub"フィールドと比較されます。これが一致した場合、このユーザーのアクセス・トークンが生成され、クライアントに返されます。
-
MDC対応環境の場合、JWTトークン作成の一環として、別の要求である"mdc_sso_link"もトークンに追加されます。この要求には、セッションが固定されているマシンのclusterIdと、UserIdentityStore参照が含まれます
-
トークンがOAuthトークン・リクエストのJWTベアラー・フローの一部として戻されると、OAMサーバーは、トークンからSSOセッションIDを取得します。
-
有効なセッションのチェック: JWTトークンにセッションIDが含まれる場合、サーバーは、それをSSOのリンクしたJWTトークンであると認識します。それは、トークンから"sessionId"要求を、mdc_sso_link要求からclusteridを取得し、セッションを取得します。セッションの有効性をチェックする通常のMDCフローは、ここで維持されます。
-
セッションが有効な場合、SSOセッションのサブジェクトが、JWTトークンの"sub"フィールドと比較されます。これが一致した場合、このユーザーのアクセス・トークンが生成され、クライアントに返されます。
セッションが15分(構成値)を超えてアイドル状態の場合に、このJWTトークンの有効性をチェックすると、失敗します。これにより、セッションのルールがOAuthアクセス・トークンにも適用されることが保証されます。