[Security] A RESTful interface to Oracle Entitlements Server 11g

OESの役目は、許可の決定をクライアントに提供することです。クライアントは、OpenLiberty OpenAZ PEP APIインタフェースを実装するJava APIだけでなく、XACMLのWebサービスインタフェースを使用することができます。
しかし、いくつかのクライアントにとっては、RESTスタイルのAPIを介してOESにクエリを投げるほうが容易かもしれません。これは特に古いJavaまたはJava以外のクライアント、またはスマートフォンやその他の組み込みデバイスなどといった、より制限された環境で実行中のクライアントに当てはまります。別の例では、データベースで実行中のストアドプロシージャもそうです。RESTのスタイルを使用してサーバーに問い合わせる機能、基本的にHTTPのURLを使用して問い合わせる機能を使って、依存性をなくし、インタフェースを簡素化することで、クライアントを簡素化することができます。
このエントリでは、OESクライアントPEP APIにアクセスする、自然なRESTスタイルのインターフェイスを提供するOESへのゲートウェイを説明します。

OpenAZ PEP API (JavaDoc)
http://openaz.svn.sourceforge.net/viewvc/openaz/test/doc/index.html


The PEP API
まず、OpenAZ PEP APIを思い出してみましょう。 JavaクライアントAPIの典型的な呼び出しは次のようにようになります。
contextMap.put("level","5);
contextMap.put("speciality","Energy");
PepResponse response =
  PepRequestFactoryImpl.getPepRequestFactory().newPepRequest(
    "glen.byrne",                             //subject
    "execute",                                //_action,
    "TradingApp/Options/BlackScholes/UK-Gas", //resource
    contextMap).decide();                     //attributes map
System.out.println("Response from OES for request: {" + user + ", " +
  action + ", " + resource + "} \nResult: " + response.allowed());
Map obligations = response.getObligations();
指定されたサブジェクトが(属性値のペアのコンテキストマップ付き)特定のリソースに対してアクションを実行する権利を持っているかどうかというリクエストに対し、いわゆる義務は、クライアントが承認決定の微調整として解釈できる許可の決定と共に返される、キー/値ペアのリストです。例えば、データベースクライアントは、ユーザーが閲覧を許可されているテーブルのどの行をユーザは閲覧できるかを、データベースクライアントに提供できるように、where句が提供されることがあります。


Ầ la REST
HTTPリクエストとしてこのようなクエリをエンコードする場合、通常は以下のようなURLの形でHTTPのGETを発行します。
http://<machine>:<port>://<context root/TradingApp/Options/BlackScholes/UK-Gas/execute?user=glen.byrne&level=5&speciality=Energy
リソースをURLにマッピングし、ユーザとコンテキストマップをクエリパラメータとして渡します。
この小さなJDeveloperのプロジェクトで、OESのインターフェースを提供するゲートウェイを実装しています。このゲートウェイは、OES11gクライアントを用いてWebLogic Server Security Moduleとして構成されたWebLogic10.3.5ドメインにデプロイする必要があります。これが、OESを呼び出すWebアプリケーションをサポートするWebLogic Serverドメインを設定する標準オペレーションです。デプロイが終了すれば、以下のURLにアクセスして、ゲートウェイをテストできます。
http://localhost:7001/oesgateway/sayHello
この結果、'Hello World!'という文字列が返ってくるはずです。

アプリケーション、リソースタイプ、リソースや認可ポリシーをOESで構成すれば、上記の例のように、URLにアクセスし、ゲートウェイを経由してOESにクエリを発行することができます。一般的なパターンでは、すべてのコンテキスト属性をクエリパラメータとして渡し、以下の形式のURLにアクセスします。
http://localhost:7001/oesgateway/<resource string>/<action>/?user=<user name>
Webブラウザを使って、ゲートウェイから上記のURLにアクセスできます。ゲートウェイにアクセスするクライアントプログラムはプロジェクトに含まれており、HTTPのgetを直接実行する非常に簡単なJavaプログラムもこちらからダウンロードできます。
なお、ゲートウェイはJersey 1.2 APIと、OES 11g (11.1.1.5) Client APIに依存しています。


原文はこちら。
http://blogs.oracle.com/robsayin/entry/a_restful_interface_to_oracle

0 件のコメント:

コメントを投稿