54 OAuthサーバーとして機能するCPQ Cloudの構成
JCS - SaaS Extensionアプリケーションなどの他のアプリケーションに対してCPQ Cloud RESTful Webサービスを使用可能にするには、OAuthサーバーとして機能するようCPQ Cloudを構成する必要があります。
CPQ Cloud OAuth 2.0フローについて
CPQ CloudにはOracle Web Services Manager (OWSM)に対する組込みサポートがないため、JCS - SaaS Extensionに組み込まれたSAMLベースのOWSM セキュリティ・ポリシーを活用することはできません。かわりに、CPQ CloudをOAuthプロバイダとして使用してCPQ Cloud REST APIのリソースにアクセスするために標準のOAuth 2.0フローを実装できます。
OAuth 2.0 Authorization FrameworkドキュメントのOAuth 2.0認可コード付与フローを参照してください。
次の図と説明は、CPQ Cloud OAuthアクセス・トークンの生成に必要となる、推奨3レッグOAuthフローを示しています。
これにより、CPQ Cloud RESTful APIリソースにアクセスするためのJCS - SaaS Extensionアプリケーションなどの埋込み外部アプリケーションが使用可能になります。
クライアント・リダイレクト・エンドポイントは、JCS - SaaS Extensionアプリケーションによる3レッグOAuth 2.0フローの実行を可能にする任意の実装に対する参照です。
図に示すとおり、フローのステップは次のとおりです。
- 
                        ライブCPQ Cloudセッション中のブラウザが、埋込みJCS - SaaS Extensionアプリケーション・リソースに対するリクエストをトリガーします。 
- 
                        JCS - SaaS Extensionアプリケーションが、CPQ Cloudアクセス・トークンがないことを検出し、3レッグ・フローを開始してアクセス・トークンを取得します。 
- 
                        3レッグ・フローが、事前に登録されたCPQ Cloud OAuthクライアントを使用して、CPQ Cloud認可コードに対するリクエストをCPQ Cloud認可エンドポイントにリダイレクトします。 
- 
                        CPQ Cloud認可エンドポイントが情報を検証し、ブラウザに認可コードを返した後、ブラウザがCPQ Cloud認可コードをクライアントのリダイレクト・エンドポイントにリダイレクトします。 
- 
                        クライアントのリダイレクト・エンドポイントが、ブラウザから認可コードを受信し、認可コード、クライアントID、クライアント・シークレットおよびクライアントのリダイレクト・エンドポイントURIをCPQ Cloudトークン・エンドポイントに提供して、CPQ Cloud OAuthプロバイダからのアクセス・トークンをリクエストします。 
- 
                        CPQ Cloud OAuthプロバイダが、情報を検証し、CPQ Cloudベアラー・アクセス・トークンをクライアントに返します。 
- 
                        クライアントのリダイレクト・エンドポイントが、当初リクエストされたJCS - SaaS Extensionアプリケーション・リソースのURLにCPQ Cloudアクセス・トークンをバインドし、そのリソースにリダイレクトします。 
- 
                        JCS - SaaS Extensionアプリケーションが、CPQ Cloudアクセス・トークンを使用してCPQ Cloud RESTful APIにアクセスします。 CPQ Cloudリソース・サーバーが、要求を検証し、適切なリソースを使用して応答します。 CPQ Cloudアクセス・トークンは、失効するまで使用できます。 CPQ Cloudアクセス・トークンが失効したら、新しいCPQ Cloudアクセス・トークンをネゴシエーションする必要があります。 
CPQ Cloud OAuthプロバイダ用のOAuth 2.0エンドポイント
次に、CPQ Cloudを使用してOAuthの3レッグ・フローを実行する上で役に立つ特定の詳細について説明します。
CPQ Cloud OAuthプロバイダのエンドポイント
| エンドポイント | URL | 
|---|---|
| クライアント登録 | https://<CPQHost>/rest/v1/clients | 
| 認可 | https://<CPQhost>/oauth/authorize | 
| トークン | https://<CPQhost>/oauth/token | 
CPQ Cloud認可エンドポイントからの認可コードのリクエスト
続行する前に、「CPQ Cloudクライアント登録エンドポイントでのクライアントの作成および登録」を参照してください。次のcURLコマンドは、CPQ Cloudエンドポイントからの認可コードをリクエストする例です。
curl -d “client_id=<client_id>&redirect_uri=<redirect_uri>&response_type=code&time=<currTime>&state=<state>” —X GET https://<CPQhost>/oauth/authorize —H "Content-Type: application/www-urlencoded-type"
- 
                              <client_id>は、有効なCPQ Cloudクライアントです。
- 
                              <redirect_uri>は、クライアントのリダイレクトURIです。
- 
                              <state>パラメータの詳細は、IEFT OAuth2 RFC仕様のOAuth 2.0でのstateの使用方法の理解を参照してください。
- 
                              < <CPQhost>は、/>CPQ Cloudホストの有効なURLです。
上記のコールの結果は、CPQ Cloud認可コードを伝達するクライアントのリダイレクトURIへのリダイレクトです。
CPQ Cloudトークン・エンドポイントからのアクセス・トークンのリクエスト
次のcURLコマンドは、CPQ Cloudトークン・エンドポイントからのアクセス・トークンをリクエストする例です。
curl -d “grant_type=authorization_code&code=<code>&client_id=<client_id>&client_secret=<client_secret>&redirect_uri=<redirect_uri>” —X POST https://<CPQhost>/oauth/token —H "Content-Type: application/www-urlencoded-type"
次のJSON構造は、上記のコールの例です。
{ "scope": "api", "expires_in": "<seconds>", "token_type": "bearer", "access_token": "<token>" }レスポンスからの次の戻りパラメータに注意してください。
- 
                           clientIdは、RESTfulクライアントの登録が成功した後に返されるレスポンスの一部です。有効なclientIdがない場合、アクセス・トークンは付与されません。 
- 
                           リダイレクトURIパラメータは、CPQ Cloud認可サーバーからのレスポンスを受信する場所であるため、特に重要です。 
access_tokenは、上記のJSON構造の一部です。
CPQ Cloudクライアント登録エンドポイントでのクライアントの作成および登録
OAuthアクセス・トークンを生成するには、CPQ Cloudクライアント登録エンドポイントでクライアントを作成および登録する必要があります。
次の例では、CPQ Cloudクライアント登録エンドポイントでのクライアント登録プロセスにcURLを使用します。
- 
                           好みのテキスト・エディタを開き、次のコンテンツをコピーして貼り付け、RESTfulリクエストのペイロードを作成します。 { "name": "Client", "description": "Client for accessing CPQ Cloud Service API from PaaS", "expires": 3600, "clientKey": "PAAS_SX_CPQ", "redirectUri": "https://YourJCS-SaaS-InstanceURL/YouAppName/jersey/clientRedirectEndpoint/PAAS_SX_CPQ", "grantType": "AuthorizationCode" }
- 
                           ニーズに応じてコンテンツを変更します。 { "name": "Enter the name for this record", "description": "Enter your description for this record", "expires": "Set your token expiration value.", "clientKey": "Enter your Selected ClientKey", "redirectUri": "Enter your selected redirect URI.", "grantType": "AuthorizationCode" }
- 
                           ファイルを保存します。 
- 
                           次の cURL commandを実行します: curl -H "Authorization: Basic <creds>" -H "Content-Type: application/json" -X POST --data @/MyPath/MyJsonFile.json https://yourCPQInstance/rest/v1/clients/200 OKステータス・コードおよび次のJSONレスポンスを受け取ります。 { "name": "Your defined name", "description": "Your defined description", "expires": “Your defined expiration value” , "clientKey": "Your defined client key", "clientId": "client id", "clientSecret": "client secret", "redirectUri": "Your defined redirect URI", "grantType": "AuthorizationCode" }クライアントのリダイレクト・エンドポイントの開発者は、JCS - SaaS Extensionアプリケーションなどのセキュアな場所にクライアント情報資格証明を安全に格納することについて、そしてまたCPQ Cloud認可トークンのネゴシエーションに関するクライアント情報を取得するために必要なすべての機能を実行することについても全責任を負います。 注意: クライアント情報(資格証明)は、JCS - SaaS Extensionアプリケーションなどのセキュアな場所に安全に格納する必要があります。「JCS - SaaS Extension CSFストアでの資格証明の安全な格納およびフェッチ」を参照してください。
