Oracle Identity Cloud Serviceでのアプリケーションの構成
認証が正しく機能するには、Oracle Fusion Applications Cloud ServiceおよびOracle PaaS (Oracle Visual Builder)またはカスタムhtml 5アプリケーションを保護している同じOracle Identity Cloud Serviceインスタンスを使用する必要があります。Oracle Identity Cloud Service内で、クライアント認証に使用するアプリケーションを作成する必要があります。
このシナリオでは、Oracle FunctionsとOracle API Gatewayの重要性と、両方とも同じOracle Identity Cloud Service Applicationを使用するかわりにOracle Identity Cloud Serviceを別々のエンティティとして保護することによって、Oracle FunctionsとOracle Fusion Applications Cloud Serviceのエンティティ間の相互作用を分離します。
通常、Oracleの顧客が作成するOracle SaaS拡張アプリケーションは、複雑なロジックを実行します。たとえば、一般的なシナリオは、Oracle Fusion Applications Cloud Serviceからデータを取得してなんらかの方法で処理し、データをOracle Fusion Applications Cloud Serviceにプッシュしてデータベースなどの別のターゲットに戻すことです。
このため、ここでは2つのOracle Identity Cloud Serviceアプリケーションを持つアーキテクチャになっています。
- Oracle Functionsを、リソースおよびOracle Fusion Applications Cloud Serviceの信頼できるクライアントとして保護するアプリケーション。
- Oracle Fusion Applications Cloud Serviceインスタンスをリソースとして保護するアプリケーション。
この記事の手順では、これらのアプリケーションの最初の作成と構成のプロセスを段階的に実行し、Oracle Functionsを保護します。これら2つのアプリケーションのうち2番目はすでに存在している必要があります。Oracle Fusion Applications Cloud ServiceとOracle PaaS間でのフェデレーションを有効にするために、アプリケーションを作成および構成する必要がありました。
この設定により、Oracle Fusion Applications Cloud Serviceにアクセスする信頼できるクライアントのルールまたはポリシーとは異なるルールまたはポリシーにアクセスするように構成できます。この構成では、API Gatewayへの着信アクセス・トークンが必要になるのは、機能を起動するためにOracle Functionsへのアクセス権が認可されているだけですが、Oracle Fusion Applications Cloud Serviceインスタンスにアクセスするために必要な権限と同じ権限が必ずしも付与されている必要はありません。Oracle Visual Builderアプリケーションには、API Gatewayに到達するためのアクセス・トークンを生成するOracle Identity Cloud Service Applicationが関連付けられている必要があります。このOracle Identity Cloud Serviceアプリケーションは、関数/APIゲートウェイ・リソースのクライアントになります。
アーキテクチャ・ダイアグラムに表示されるトークンの交換により、Oracle Fusion Applications Cloud Service Resourceのクライアントである関数の場合のアイデンティティを伝播する追加の保護レイヤーが提供されます。これは、Oracle WebLogic OAuthアサーション・プロセスに類似しており、Oracle Java Cloud Serviceを使用するものなど、古いサポートされるSaaS拡張機能で使用されるOracle Identity Cloud Serviceがあります。
これは、一部のユースケースでは、Oracle Functions用のトークンを生成するために使用されるOracle Identity Cloud Serviceアプリケーションに、Oracle Fusion Applications Cloud Service用ではなく関数用のリソース・スコープのみを含めることができるということを意味します。この場合、Oracle FunctionsにはOracle Fusion Applications Cloud Serviceを起動するためにトークンを再利用する機能はありませんが、Oracle Functionsに到達することは有効です。したがって、ビジネス・ロジック、ユーザー・ロールと権限またはその他の基準に基づいて、一部のユーザーまたは機能保証にアクセスできない論理フローを実装できます。
別のユースケースでは、Oracle Functionsは、APIゲートウェイからのリクエストで渡された証明書およびユーザーを使用して、Oracle Fusion Applications Cloud Serviceのアクセス・トークンをリクエストするコードを含めることができます。
Oracle Identity Cloud ServiceでのOracle Functionsアプリケーションの作成
Oracle Identity Cloud Service内で、Oracle Functionsクライアント認証に使用する機密アプリケーションを作成する必要があります。
Oracle Fusion Applications Cloud Serviceインスタンスと統合した同じOracle Identity Cloud Serviceインスタンス内で、機密アプリケーションを作成し、クライアント構成が設定され、クライアント資格証明、JWTアサーションおよびリソース所有者の権限付与が有効になるようにします。
Oracle Identity Cloud Serviceアプリケーションの準備およびテスト
Oracle Fusion Applications Cloud Serviceインスタンスに対応するアプリケーションに接続するようOracle Identity Cloud Service機密アプリケーションを構成して、アプリケーションをテストしてください。
curl --location --request GET 'https://<your fusion instance>.<domain>.com/fscmRestApi/resources/11.13.18.05/expenses' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <JWT_TOKEN>'
このカーソル問合せは、Expensesデータを戻す必要があります。Oracle Functions Oracle Identity Cloud Serviceアプリケーションを信頼できるクライアントとして構成
Oracle FunctionsにOAuthリクエストを作成するには、Oracle Identity Cloud Serviceアプリケーションが信頼できるクライアントとして使用する証明書が必要です。使用できる証明書がない場合は、開発時に使用するための自己署名証明書を生成できます。
指定されたスクリプトgenSelfSignedKeypair.sh
では、キーを生成できません(まだ生成していない場合)。テナントおよびキーの別名値を指定してスクリプトを実行します。この例では、mytenantをテナント名として、fnassertionkeyをキー別名として指定しました。
Oracle Cloud Infrastructure Vaultへのキーストア情報のインポート
Oracle Functionsを使用したアサーション・プロセスでは、インポートされたキーストアおよびパスワードの使用が必要になります。セキュリティを最適化し、ハードコードされたパスワードおよびシークレットを使用しないようにするには、Oracle Cloud Infrastructure Vaultを利用できます。
Oracle Cloud Infrastructure Vaultサービスでは、機密データを安全に暗号化および格納できます。キー・ストアおよび公開キー・パスワードをVaultに格納し、Oracle FunctionsバックエンドのOracle Cloud Infrastructure SDKを使用してそれを参照してユーザーの認証を実行できます。JKSファイルを安全に暗号化して保存することもできます。
このソリューション・プレイブックの「始める前に」セクションで、クイック・スタート・ガイドの使用など、Oracle Functions環境を設定する必要がありました。クイック・スタート・ガイドの設定では、ルート・コンパートメント・レベルの関数のポリシーを作成するように要求されます。次の例では、ポリシーはFnTenancyPolicy
という名前です。ポリシーに追加の文を追加して、Oracle Functionsがそのポリシーに関連付けられているVaultにアクセスできるようにする必要があります。使用するOracle Functionsのグループの名前は、クイック・スタート・ガイドのテナンシを構成するときに作成した名前にする必要があります。この例では、fnGroup1
はOracle Functionsを使用できるユーザーのグループです。
Oracle Identity Cloud ServiceでのOracle Visual Builderアプリケーションの構成
Oracle Visual Builderアプリケーションには、信頼できるクライアントとして自動的に構成されるOracle Identity Cloud Serviceアプリケーションが関連付けられています。そのアプリケーションをOracle Functionsリソースのクライアントとして使用できるように構成する必要があります。
提案されたアーキテクチャで示されている相互作用の一部として、Oracle Identity Cloud Serviceインスタンスに関連付けられたOracle Visual Builderアプリケーションは、Oracle Fusion Applications Cloud Serviceとフェデレートされ、Oracle Functionsに接続されたOracle Visual Builderアプリケーションは、APIゲートウェイおよびOracle Functionsリソースに到達可能なアクセス・トークンを生成できる必要があります(スコープ別に設定)。Oracle Identity Cloud ServiceでOracle Visual Builderアプリケーションを構成し、新しく作成したOracle Functionsアプリケーションのスコープを追加して、SaaSの機能を拡張するリソースのクライアントとして設定する必要があります。
Oracle Visual Builderで新しいアプリケーションを作成すると、Oracle Identity Cloud Serviceアプリケーションが自動的に作成されます。たとえば、TestSaaSExtensionFN
というアプリケーションを作成する場合、Oracle Identity Cloud Serviceコンソールおよびリスト・アプリケーションに移動できます。この場合、TestSaaSExtensionFN
というアプリケーションを検索する必要があります。