この章では、Oracle Application Development FrameworkおよびJavaEEのセキュリティ機能の概要について説明します。
この項は、次のトピックで構成されています。
Oracle Application Development Framework(Oracle ADF)は、エンドツーエンドのアプリケーション・フレームワークであり、Java Platform, Enterprise Edition(Java EE)標準およびオープンソース・テクノロジ上に構築されます。これによって、サービス指向アプリケーションの実装が簡略化され迅速化されます。Web、ワイヤレス、デスクトップ、Webサービスのインタフェースを使用して、データの検索、表示、作成、変更および検証を行うエンタープライズ・ソリューションでは、Oracle ADFにより開発作業が容易になります。
Oracle JDeveloper 11gとOracle ADFを組み合せて使用すると、設計からデプロイメントに至る開発ライフサイクル全体が対象となる環境が実現され、ドラッグ・アンド・ドロップによるデータ・バインディング、視覚的なUI設計、およびチーム開発などの組込み機能を使用できます。
FusionのWebテクノロジ・スタックを使用して作成するアプリケーションでは、モデル-ビュー-コントローラ・アーキテクチャに準拠することで、ビジネス・ロジック、ページ・ナビゲーションおよびユーザー・インタフェースの明確な分離が実現されます。
このフレームワークのコア・モジュールは、JSR-227仕様を実装した宣言的データ・バインディング機能であるOracle ADF Modelです。Oracle ADF Modelレイヤーにより、統一化されたアプローチにより、任意のユーザー・インタフェースを任意のビジネス・サービスにバインドできます。その際、コードの記述は不要です。FusionのWebアプリケーション・テクノロジ・スタックを構成するその他のモジュールは、次のとおりです。
Oracle ADF Business Components: ビジネス・サービスの構築が容易になります。
Oracle ADF Facesリッチ・クライアント: JavaServer Faces(JSF)で作成されたWebアプリケーションに、AJAX対応UIコンポーネントのリッチ・ライブラリを提供します。
Oracle ADF Controller: JSFがOracle ADF Modelに統合されます。複数のJSFページ間だけでなく、たとえば、メソッド・コールやその他のタスク・フローなど、他のアクティビティ間でもコントロールを渡すように再利用可能なタスク・フローなどの追加機能を実現することで、ADF Controllerにより標準JSFコントローラを拡張します。
Oracle ADF Securityフレームワークは、Fusion Webアプリケーションに認証と認可のサービスを提供するための推奨テクノロジです。主な理由は、Oracle ADF Securityが、Oracle Platform Security Services(OPSS)アーキテクチャの上部で構築され、このアーキテクチャにより重要なセキュリティ・フレームワークが実現され、Oracle WebLogic Serverと緊密に統合されていることです。
注意: OPSS機能などのセキュリティ機能におけるOracle ADFの組込みサポートは、Oracle ADFの外部でこれらの機能を実装するために必要な工数の削減に役立ちます。実際、コンテナ管理のセキュリティのみを使用する場合、いくつかの機能は使用できません。 |
それ以外にも、ユーザー・ログインおよびリソースの保護を処理できるセキュリティ対応モデルはありますが、ADFバインド・タスク・フロー、ADFバインディングを使用するトップレベルのWebページ(バインド・タスク・フローに含まれないページ)、および最も低いレベルの粒度でADFエンティティ・オブジェクトとその属性によって定義されたデータ列に対して宣言型で許可ベースの保護を実現するのに、Oracle ADF Securityはきわめて適しています。このドキュメントでは、ADF Securityフレームワークが保護するこれらの個々のリソースを、ADFセキュリティ対応リソースと呼びます。
ADFセキュリティの設定ウィザードを実行して、Fusion WebアプリケーションのADF Securityを有効にします。このウィザードにより、Fusion Webアプリケーション全体のADF Securityを構成するので、ADFセキュリティ対応リソースに関連するWebページがデフォルトで保護されます。このため、ADF Securityを有効化すると、アプリケーションがロックダウンされるので、そのページはデフォルトでセキュアであるとみなされます。
ADF Securityを有効化した後、ユーザーにアクセス権を付与する必要があります。これによって、Fusion WebアプリケーションのWebページをユーザーは表示できるようになります。ユーザーに付与するアクセス権は、ページのADFセキュリティ対応リソース用に指定するセキュリティ・ポリシーとして知られています。タスク・フローの入力やWebページの表示を行うユーザー権限を制御するのは、最終的にはADFリソースにおけるセキュリティ・ポリシーになります。
ADF SecurityはJava Authentication and Authorization Service(JAAS)に基づいているので、セキュリティ・ポリシーによりプリンシパル(ユーザーまたはアプリケーション・ロール)、ADFリソースおよび権限(リソースのADF権限クラスで定義される操作)が識別されます。たとえば、Fusion Order DemoアプリケーションのStoreFrontモジュールでは、チェックアウトタスクフローのタスク・フローにより含まれるWebページを保護し、ログイン済ユーザー(認証済ユーザー)にのみアクセス権を付与します。
実行時、Oracle ADF Securityフレームワークではタスク・フローのセキュリティ・ポリシーに対して権限のチェックを実行して、ユーザーに表示操作を完了する権限があるかどうかを識別します。この場合、ユーザーがチェックアウト・プロセスを完了しようとする場合は、セキュリティ・ポリシーでは表示の権限をユーザーに付与する必要があります。
包含階層
ユーザーとADFリソースに対してセキュリティ・ポリシーを定義するタスクを簡略化するために、ADF SecurityではADFバインド・タスク・フローとそこに含まれるWebページに対して1つのセキュリティ・ポリシーを定義できる包含階層を定義します。つまり、バインド・タスク・フロー・レベルでセキュリティ・ポリシーを定義すると、次のものが保護されます。
フローのエントリ・ポイント
フロー内のすべてのページ
ロール・ベースのセキュリティ
個々のユーザーにアクセス権を付与するかわりに、ユーザーをアプリケーション・ロールにグループ化し、そのロールに表示権限を付与します。これにより、構成が簡素化され、セキュリティ管理者のパーミッション管理能力が向上します。
詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』のユーザーおよびロールの概要に関する項を参照してください。
ドキュメントに記載されている手順
『Oracle Fusion Middleware Oracle Application Development FrameworkのためのFusion開発者ガイド』に記載されている手順では、次のトピックおよびその他のトピックについて説明しています。
ADFセキュリティの設定ウィザードを使用してOracle ADF Securityを有効化する方法
アプリケーション・ロールを作成する方法
ADFリソースを公開する方法
テスト・ユーザーを作成してからアプリケーション・ロールに関連付ける方法
ログイン・ページと「ようこそ」ページを作成する方法
セキュアなアプリケーションをJDeveloperで構成、デプロイおよび実行する方法
この項では、Oracle ADF Securityの使用方法の概要を説明します。
セキュリティ・ウィザードの使用
Oracle ADF SecurityをOPSSに統合できるようにする構成プロセスを単純にするため、JDeveloperではADFセキュリティの設定ウィザードが用意されています。このウィザードは、Oracle ADF Securityを使用してFusion Webアプリケーションを保護する最初の一歩となります。このウィザードはアプリケーションレベルのツールなので、実行すると、アプリケーションに含まれるすべてのユーザー・インタフェース・プロジェクトでADF Securityが有効になります。
ADFセキュリティの設定ウィザードにより、認証と認可を個別に有効化することを選択できます。
ADF Securityでは認証にJava EEコンテナ管理のセキュリティを利用しますが、認証を有効化すると、ADF認証サーブレットを使用してユーザーのログインとログアウトがサポートされます。ただし、Webページを保護するには、コンテナ管理のセキュリティ制約を定義します。
認可を有効化することは、ADFリソースに対してセキュリティ・ポリシーを作成することで、Fusion Webアプリケーションに対するアクセスの制御を意図することを意味します。
このウィザードにより、Fusion Webアプリケーション全体のADF Securityを構成するので、ADFセキュリティ対応リソースに関連付けられたWebページが保護されます。このため、アプリケーションがロックダウンされ、そのページはデフォルトでセキュアであるとみなされます。
アプリケーション・ロールの作成
アプリケーション・ロールは、アプリケーションのポリシー要件を表し、同じアクセス権限を持つユーザーのグループを定義します。アプリケーション・ポリシー・ストアに作成するアプリケーション・ロールは、お使いのアプリケーション固有のものです。
実行時には、ユーザーがメンバーであるアプリケーション・ロールにより、ユーザーにアクセス権限が付与されます。このように、セキュリティ・ポリシー(後述します)を定義する前に、権限の付与先にするアプリケーション・ロールをポリシー・ストアに含める必要があります。
セキュリティ・ポリシーの付与
ADF Securityを有効化した後、ユーザーにアクセス権を付与する必要があります。これによって、Fusion WebアプリケーションのWebページをユーザーは表示できるようになります。ユーザーに付与するアクセス権は、ページのADFセキュリティ対応リソース用に指定するセキュリティ・ポリシーとして知られています。タスク・フローの入力やWebページの表示を行うユーザー権限を制御するのは、最終的にはADFリソースにおけるセキュリティ・ポリシーになります。
テスト・ユーザーの作成
JDeveloperには、アプリケーション固有のファイル・リポジトリにアイデンティティ・ストアとポリシー・ストアの両方を作成するのに役立つエディタが用意されています。有効なユーザーIDのリストとそのIDに割り当てられたパスワードが、ファイルのアイデンティティ・ストア・セクションに格納されます。
同じエディタを使用して、アプリケーション・ロールを作成し、アプリケーション・ロールのメンバーとしてテスト・ユーザーまたはエンタープライズ・ロールを割り当てることができます。ユーザーがリソースを表示できるようにするには、そうしたロールのメンバーであるユーザーではなく、アプリケーション・ロールに対して権限を付与します。
ログイン・ページの作成
Oracle ADF Securityでは、暗黙的な認証と明示的な認証を使用できます。
暗黙的な認証のシナリオでは、ADFセキュリティ対応リソースに関連付けられているが匿名ロールには付与されていないWebページに未認証ユーザーがアクセスしようとすると、認証が動的にトリガー実行されます。ログイン後、リクエストされたページのADFセキュリティ対応リソースにおいて表示アクセス権が認証済ユーザーに付与されているかどうかが別に検証されます。
明示的な認証のシナリオでは、ログイン・リンクが表示された公開ページがアプリケーションに用意され、このリンクをクリックすると、そのユーザーのログインにおいて認証チャレンジがトリガー実行されます。このログイン・リンクでは、正常に認証が行われた後に表示されるターゲット・ページ(認証済ユーザーにはアクセス権があることが前提)を別にオプションで指定できます。
JDeveloperにおけるセキュリティのテスト
Oracle JDeveloperの統合WLSにより、JDeveloperでアプリケーションを直接実行できます。また、アプリケーションで定義するアプリケーション・ポリシー、ユーザーおよび資格証明などのセキュリティ・オブジェクトを移行するかどうかを決定できます。デフォルトでは、アプリケーションを実行するたびに、すべてのセキュリティ・オブジェクトが統合WLSに移行されます。
ドキュメントに記載されている手順
『Oracle Fusion Middleware Oracle Application Development FrameworkのためのFusion開発者ガイド』に記載されている手順では、次のトピックおよびその他のトピックについて説明しています。
セキュリティ・ウィザードの使用
アプリケーション・ロールの作成
ADFセキュリティ・ポリシーの定義
テスト・ユーザーの作成
ログイン・ページの作成
JDeveloperにおけるセキュリティのテスト
OPSSのセキュリティ機能はOPSS APIにより利用できますが、構成についてはGUIではサポートされていません。機能を実装するには、デプロイメント・ディスクリプタを手動で編集する必要があります。
Oracle Fusion Middlewareにおいて、開発からデプロイメントやテストに至るまで、エンドツーエンドのセキュリティ実装例については、次のOracle Technology Networkページを参照してください。
http://www.oracle.com/technology/products/id_mgmt/opss/index.html