[SOA, Security] Identity Propagation across Web and Web Service - 11g

原文はこちら。
https://blogs.oracle.com/owsm/entry/identity_propagation_across_web_and

最近お客様を訪問した際にこのトピックが出てきました。実はこのトピックは何度となく出てくるものなので、WebアプリケーションでのSSOを実現する上での推奨モデル、背後のWebサービス間でのID伝播を実現する上での推奨モデルを説明しようと思いました。

下図は典型的なフローです。


以下にフローの各ステップで起こっていることをドリルダウンして説明しています(図中の赤の数字は、スタックで発生している処理の舞台裏を説明と対応しています)。
[1] WebアプリケーションはOAMで保護されているため、典型的なSSOシナリオがあてはまります。WebアプリケーションのURLはOAMで保護されています。Web GateはブラウザからWebアプリケーションへのリクエストをインターセプトし、OAM(SSO)トークンがある場合はWeb GateがOAMトークンが正当性を確認します。SSOトークンがない場合、ユーザをログインページに案内し、ユーザが資格証明を入力します。ユーザが認証されるとOAMトークンを当該ブラウザセッション用に作成します。
[2] Web GateがOAMトークンを正当と確認したら、トークンをWebアプリケーションが動作しているWebLogic Serverへ伝播します。OAM Identity AsserterをWebLogicドメインで確実に構成する必要があります。OAM Identity Asserterが設定されていれば、JAASサブジェクトが作成されることになります。
詳細は以下のドキュメントをご覧下さい。
Oracle® Fusion Middleware Administrator's Guide for Oracle Access Manager with Oracle Security Token Service 11g Release 1 (11.1.1)
Configuring OAM Security Providers for WebLogic
http://docs.oracle.com/cd/E23943_01/doc.1111/e15478/webgate.htm#CACIAEDJ
[3] (Webアプリケーションの)WebサービスクライアントをOWSM SAML Client Policyで保護します。この方法で保護する場合、OWSMエージェントは(OAM Identity Asserterが[2]で作成している)JAASサブジェクトからSAMLトークンを作成し、SOAPメッセージに入れ込みます。
Java EE JAX-WSプロキシクライアントをOWSMポリシーで保護する手順は以下のドキュメントをご覧下さい。
Oracle® Fusion Middleware Security and Administrator's Guide for Web Services 11g Release 1 (11.1.1.6)
Attaching Policies to Java EE Web Service Clients
http://docs.oracle.com/cd/E23943_01/web.1111/b32511/attaching.htm#BABBHHHC
[注意]図にあるように、Java EE WebアプリケーションではなくWebCenterを使ってポートレットを構築することもできます。WebCenterを使う場合、同じアーキテクチャに従うことができます。WebCenterのポートレットをOWSMで保護する手順だけが異なります。
Oracle® Fusion Middleware Administrator's Guide for Oracle WebCenter Portal 11g Release 1 (11.1.1.6.0)
Configuring WS-Security
http://docs.oracle.com/cd/E23943_01/webcenter.1111/e12405/wcadm_security_wss.htm#CIHEBAHB
[4] SOAコンポジットアプリケーションをOWSM SAML Policyで保護します。OWSMエージェントはインバウンドSOAPリクエストをインターセプトし、SAMLトークンが正当であることを確認し、JAASサブジェクトを作成します。
[5] SOAコンポジットアプリケーションがOSBのProxy Serviceを呼び出そうとする場合、SOAコンポジットアプリケーションの「参照(Reference)」をOWSMのSAML Client Policyで保護します。ここで再度OWSMエージェントは[4]でOWSMエージェントが作成したJAASサブジェクトから新たにSAMLトークンを作成し、SOAPメッセージに埋め込みます。
SOAコンポジットアプリケーション(サービス、参照、コンポーネント)を保護する手順は以下のドキュメントをご覧下さい。
Oracle® Fusion Middleware Security and Administrator's Guide for Web Services 11g Release 1 (11.1.1.6)
Attaching Policies to Web Services
http://docs.oracle.com/cd/E23943_01/web.1111/b32511/attaching.htm#CEGDGIHD
[6] リクエストがOSBのProxy Serviceに到達すると、Proxy Serviceを再度OWSM SAML Token Service Policyで保護します。それゆえ[4]と同じ手順を実行します。最終結果はJAASサブジェクトです。
[7] OSBが業務アプリケーションのWebサービスを呼び出す必要がある場合は、OSBのBusiness Serviceを経由します。OSBのBusiness ServiceはOWSMのSAML Client Policyで保護されており、[5]が繰り返されます。
OSBのProxy ServiceとBusiness Serviceを保護する手順は以下のドキュメントをご覧下さい。
Oracle® Fusion Middleware Administrator's Guide for Oracle Service Bus 11g Release 1 (11.1.1.6.2)
Proxy Service Policy Page
http://docs.oracle.com/cd/E23943_01/admin.1111/e15867/proxy_services.htm#OSBAG1097
Oracle® Fusion Middleware Oracle Service Bus管理者ガイド 11g リリース1(11.1.1.6.0)
プロキシ・サービス・ポリシー・ページ
http://docs.oracle.com/cd/E28389_01/admin.1111/b61436/proxy_services.htm#OSBAG1097
[8] 最終的にメッセージが業務アプリケーションに到達すると、このサービスはOWSM SAML Service Policyで保護されているため、OWSMエージェントが手順[4]を繰り返します。WebLogic ServerのWebサービスやADF Webサービスなどを保護する手順は以下のドキュメントをご覧下さい。
Oracle® Fusion Middleware Security and Administrator's Guide for Web Services 11g Release 1 (11.1.1.6)
Attaching Policies to Oracle Infrastructure Web Service Clients
http://docs.oracle.com/cd/E23943_01/web.1111/b32511/attaching.htm#CEGCJDIF
上記では説明を簡潔にするため、どのOWSM SAML Policyを使うべきかという点を説明していません。OWSMでは数多くのSAML Policyを標準で用意していますので、私は以下のリンクで簡単に種々のSAML Policyを用いる上でのトレードオフについて説明しています。
SAML support in OWSM - Best Practices - Part#1 - 11g
https://blogs.oracle.com/owsm/entry/saml_support_in_owsm_best
上図と、それに付随するフローの各ステップで発生している内容の説明では、STSを使わず、SAML SLもしくはSAML Bearerベースのポリシーを使っていることを前提にしています。

0 件のコメント:

コメントを投稿