33 Oracle Sales Cloudのマッシュアップ用のJSON Webトークンの使用
Oracle Sales CloudでのJWTの使用について
JWTユーザー・トークンは、UIのマッシュアップのユースケースでエンド・ユーザーのコンテキストを使用してJCS - SaaS Extension Webサービスを起動するためにOracle Sales Cloudアプリケーション・コンポーザでUIマッシュアップ、外部リンク、カスタム・オブジェクトおよびカスタム・フィールドを使用可能にする上で効果的なツールです。
JSON Webトークン(JWT)は、ユーザーID、有効時間および暗号化された認証コードなどの情報を渡すためのテクノロジです。JWTには、HTTPを使用して認証されたユーザー・アイデンティティを共有するためのOracle Sales CloudおよびJCS - SaaS Extension用のメソッドが用意されています。基本的には、ユーザーが1つのシステムで認証した後、他のシステムは、ユーザーのアイデンティティを検証するURLエンコード・コマンドを使用してJWT情報をリクエストして受信できます。
JWTのラウンドトリップ・パターン
JWTユーザー・トークンは、Oracle Sales CloudとJCS - SaaS Extensionアプリケーションの間で次のパターンで交換されます。
-
JWTトークンが、認証されたユーザーのセッションを使用してOracle Sales Cloud内で構築されます。
-
このトークンは、URLの一部としてJCS - SaaS Extensionアプリケーションに渡されます。
-
JCS - SaaS Extensionアプリケーションは、URLからトークンを引き出し、メモリーに格納します。
-
このアプリケーションは、Oracle Sales CloudにWebサービスをコールバックするときに、トークン内の資格証明をHTTPヘッダーの一部として使用します。ユーザー・アイデンティティはトークンに含まれているため、このアイデンティティはOracle Sales Cloud Webサービス・コールにまで適用されます。
認証および認可
Webサービス・コールが成功した後でのみページ・コンテンツが表示されるため、JCS - SaaS Extensionの認証はこの場合、関係ありません。マッシュアップ対象のUIは常に保護解除する必要があります(つまり、認証を行わない必要があります)。誰かが有効なJWTトークンなしにJCS - SaaS Extension URLを使用してこのUIに直接アクセスすると、後続のWebサービス・コールにより、Oracle Sales Cloudデータへのアクセスが許可されないよう、このアプリケーションが自動的に保護されます。
JWTの実装
アプリケーション・コンポーザまたはページ統合ツールを使用してJWTユーザー・トークン情報の交換を実装することにより、JWTアプリケーションにリンクアウトするメニュー・アイテムを作成したり、Groovyスクリプトを使用して動的URLを構築したりできます。
-
式言語の使用:
#{applCoreSecuredToken.trustToken}
。これは、Oracle Sales Cloudメニュー・アイテムからアプリケーションへのコールアウトを構築するときに使用します。 -
Groovyの使用:
(new oracle.apps.fnd.applcore.common.SecuredTokenBean().getTrustToken())
。これは、JCS - SaaS Extensionアプリケーションを指し示す動的URLを構築するときにスクリプト内で使用します。
注意:
この場合、「ADF Webサービス・プロキシの使用」で説明しているように、JWTをOWSMポリシーとして使用する方法とは対照的に、JWTをHTTPヘッダーで使用します。ページ・コンポーザでのJWTの実装
このシナリオでは、ページ・コンポーザ・ツールを使用して、JWTトークンをJCS - SaaS Extensionアプリケーションに渡すリンクを構築します。
開始する前に:
- 次のOracle Sales Cloudロールの1つがあることを確認します。
- CRMアプリケーション管理者
- アプリケーション実装コンサルタント
- 営業管理者
注意:
これらのロールのいずれもない場合は、管理者に問い合わせてください。 - Oracle Sales Cloudにサインオンします。
-
Oracle Java Cloud Service - SaaS ExtensionアプリケーションがOracle Sales Cloudに登録されていることを確認します。「Oracle Sales Cloud内のサード・パーティのアプリケーション」を参照してください。
ホーム・ページ・アイコンでのJWTの実装
このシナリオでは、JCS - SaaS Extension上でホストされているJWTアプリケーションにリンクアウトしているOracle Sales Cloudにホーム・ページ・アイコンを追加します。
jwt
パラメータを読み取ることによって) URLからJWTを読み取ることが可能になりますGroovyを使用した動的URLでのJWTの実装
このシナリオでは、JWT情報をJCS - SaaS Extensionアプリケーションに渡すGroovyを使用して動的URLを構築します。
例: JWTを使用して起動されたWebサービス
Webサービスを使用してJWTを認証メソッドとして使用するには、Webサービス・リクエスト・ペイロードとともにJWTをHTTPヘッダーに渡します。
たとえば、SOAPを使用します。
public static UserDetailsService createUserDetailsSoapService() { UserDetailsService_Service service_Service; UserDetailsService service = null; // JWT requires no client policy SecurityPolicyFeature[] secFeatures = new SecurityPolicyFeature[] {new SecurityPolicyFeature("")}; service_Service = new UserDetailsService_Service(); service = service_Service.getUserDetailsServiceSoapHttpPort(secFeatures); // add credentials and keystore details String jwt = JSFUtils.resolveExpressionAsString("#{pageFlowScope.jwt}"); // add JWT auth map to HTTP header BindingProvider bp = (BindingProvider)service; Map<String,List<String>> authMap=new HashMap<String,List<String>>(); List<String> authZlist=new ArrayList<String>(); authZlist.add(new StringBuilder().append("Bearer ").append(jwt).toString()); authMap.put("Authorization",authZlist) ; System.out.println("AuthMap:" + authMap.toString()); bp.getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS,authMap); return service; }
RESTを使用するには、HTTP(S)認可ヘッダーを追加します。
Authorization / Bearer + <sp> + JWT token
次に、RESTコールを作成します。たとえば、商談を取得するには、次のようにします。
https://<hostname>:<port>/salesApi/resources/latest/opportunities