[SOA, Security, Identity Management] Identity Propgation for REST APIs - 11g

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

以前のエントリで、OWSMがREST APIを保護するような機能が追加されたことを説明しました。これまでに、OWSMのRESTセキュリティサポートに関する質問や、REST APIでのSSOやID伝播の実現方法に関する質問をいくつかいただいています。
FMW PS6 (11.1.1.7.0) released!
https://blogs.oracle.com/owsm/entry/fmw_ps6_11_1_1
http://orablogs-jp.blogspot.jp/2013/04/fmw-ps6-111170-released.html
REST APIでのID伝播の実現方法を紹介する前に、REST APIを呼び出すことが可能な様々な種類のクライアントを識別することが有用かと考えます。クライアントは以下のように分類できます。
  1. サーバー(Java EE REST) クライアント
    これらを組み合わせる 標準的なRESTスタック(Jersey JAX-RS、JBoss REST Easyなど)を使って構築されたもの
  2. ブラウザクライアント
  3. Thickクライアント(Outlookなど)
  4. Java SEクライアント(もしくはサーバーやブラウザ以外の環境で実行するクライアント)
  5. モバイルクライアント
セキュリティ要件はクライアントの種類によって少々異なります。

JEE Clients - Server to Server communication

Server間のREST通信で、ID伝播をしたい場合、SAMLの使用をお勧めします。 OWSMは、SAML Bearer Tokenをサポートしています。OWSMは現在保護されたRESTクライアントをサポートしていませんが、RESTクライアントをプログラム的なモデルを使って構築し、OPSS Trust APIやOpenSAMLなどのようなライブラリを使って、必要なSAMLトークンを構築し、HTTPヘッダに注入することができます(下図。図をクリックすると拡大します)。
以下のエントリをフォローされている方のために言えば、この写真はこのブログの記事で説明したように、SOAPの場合と非常に類似しています。
Identity Propagation across Web and Web Service - 11g
https://blogs.oracle.com/owsm/entry/identity_propagation_across_web_and
http://orablogs-jp.blogspot.jp/2012/06/identity-propagation-across-web-and-web.html
唯一の違いは、OWSMエージェントはRESTクライアントの保護機能がないため、別のライブラリやツールキットを使う必要がある、という点です。
ブラウザベースのクライアントが呼び出すREST APIを保護する場合、2つのやり方があります。
  1. OAMのみを使う
  2. OAMをOWSMと組み合わせて使う
REST APIを使うクライアントがブラウザベースのクライアントのみであれば、OAMだけでREST APIを保護できます。

Identity Propagation vs. SSO

多くの人が同義として使っていますが、重要なのは、ID伝播とSSOは同じではないということです。(ユーザーのアイデンティティがアプリケーションで利用できるという点では)両者の正味の効果は同じですが、重要な違いがあります。
ID伝播の場合、ログイン・ログアウトの概念がありません。つまり、基本的にWeb SSOセッションの概念がないということです。


REST APIを呼び出す様々なクライアントがあり、そのうちの一つがブラウザベースのクライアントである場合、OAMとOWSMはよりよい組み合わせです。

Thick Clients like Outlook, etc

Microsoftテクノロジーベースのクライアントの場合、SAMLの代わりにSPNEGOを使ってID伝播することができます。

JSE Clients

典型的なID伝播はJava SEクライアントでそれほど大きなユースケースではありませんが、Java EEクライアントと類似の方法で実現できます。

Mobile Clients

Mobileクライアントの件は、将来のブログエントリで取り上げる予定です。

0 件のコメント:

コメントを投稿