OAuthを使用したOracle Content Managementとの統合
システムの管理やアセット、ファイル、その他のリソースの管理のためのOracle Content Management (OCM) REST APIへの開発者アクセスは、トークン・ベースの認可を介してのみサポートされます。 OCM REST APIにアクセスするには、認可に使用するOAuth 2アクセス・トークンが必要です。
アクセス・トークンをリクエストできるようにするには、OAuthクライアント・アプリケーションを作成する必要があります。 OAuthクライアントは、アイデンティティ・ドメイン管理コンソールでOracle Identity Cloud Service (IDCS)またはIdentity and Access Management (IAM)を使用して、OAuth 2クライアントとして登録する必要があるHTTPクライアントにすぎません。
シングル・サインオン(SSO)がIDCS (OCMが指すものと同じ)ですでに確立されている場合、OAuthは必要ありません。 OCM REST APIもSSOをサポートしているため、SSOで十分です。 UIにアクティブなSSOセッションがない場合は、OAuthを使用する必要があります。
- クライアント資格証明: クライアント資格証明権限付与タイプを使用する場合、クライアントはOAuthサービスを使用して認証し、アクセス・トークンをリクエストします。 この付与タイプでは、OAuthクライアント・アプリケーションは、保護されたリソースにアクセスするためのクライアント開始リクエストのアクセス・トークンを取得するための独自の資格証明を提供します。 このアクセス・トークンは、(特定のリソース所有者ではなく)クライアント自体のリソースに関連付けられているか、それ以外の場合は、クライアント・アプリケーションの実行が認可されているリソース所有者に関連付けられています。
信頼できるアプリケーション(バックエンド・サービスなど)では、ユーザーのかわりに直接アクセス・トークンをリクエストできます。 これは、OAuth 2レッグ認可フローです。 このフローまたは権限付与タイプの別のユースケースは、アプリケーション・ユーザーの統合がOCMのユーザーでない場合です、(つまり、OCMサービスのアイデンティティ・ストア以外の別のアイデンティティ・ストアに存在するため、OAuthアプリケーション・クライアント資格証明を使用してOCMにAPIコールを実行します)。
クライアント資格証明付与タイプの詳細は、「クライアント資格証明付与タイプ」を参照してください。
- 認可コード: 通常、OAuth webアプリケーションは、最初にユーザー・アイデンティティを検証し、オプションでユーザー同意を取得する必要があります。 これは、OAuth 3-legged許可フローで、この場合は許可コード付与タイプが使用されます。
この場合、最初に認可コードをクライアント・アプリケーションとリソース所有者の仲介として認可サーバーを使用して取得します。 認可コードは、リソース所有者が認可サーバーに承諾を与えた後、ブラウザのリダイレクトを介してクライアントに返されます。 その後、クライアントは認可コードをアクセス・トークン(多くの場合、リフレッシュ・トークンとともに)と交換します。 リソース所有者の資格証明はクライアントに公開されません。 許可コード付与タイプの詳細は、「許可コード付与タイプ」を参照してください。
- リソース所有者: リソース所有者付与タイプを使用する場合、リソース所有者のパスワード資格証明(ユーザー名とパスワード)を許可付与として直接使用して、アクセス・トークンを取得できます。 したがって、この付与タイプは、リソース所有者がコンピュータ・オペレーティング・システムや高特権アプリケーションなどのクライアントとの信頼関係を持っている場合に使用されます。これは、クライアントがアクセス・トークンを取得した後にパスワードを破棄する必要があるためです。
リソース所有者付与タイプの詳細は、「リソース所有者パスワード資格証明付与タイプ」を参照してください。
- アイデンティティ・ドメイン管理コンソールを使用して、Oracle Identity Cloud Service (IDCS)またはIAMにログインします。
- OAuthクライアント・アプリケーションを作成し、クライアントIDおよびクライアント・シークレットをノートにとります。
- クライアントIDおよびクライアント・シークレットを使用して、Oracle Identity Cloud Service OAuthサービスからアクセス・トークンをリクエストします。
- REST APIを呼び出すときに、アクセス・トークンを適切なHTTPヘッダーに含めます。
コンテンツ管理およびサイト管理REST APIの場合、アクセス・トークンをアイデンティティ・ドメインのあるOracle Identity Cloud Service (IDCS)またはIAMから取得するために必要なクライアントIDおよびシークレットを取得します。 2-legged OAuthの場合、クライアント資格証明を使用してクライアントIDおよびシークレットを取得します。 3-legged OAuthの場合は、認証コードを使用してクライアントIDとシークレットを取得します。
ノート:
Oracle Cloudコンソールは、アイデンティティ・ドメインを使用してIDCSをIdentity and Access Management (IAM)にマージしています。 クラウド・アカウントがアイデンティティ・ドメインを使用しているかどうかを確認できます。Oracle Cloudコンソールにサインインします。 ナビゲーション・メニューで、「アイデンティティ&セキュリティ」をクリックします。 「アイデンティティ」で、「ドメイン」を確認します。 ドメインが表示された場合は、クラウド・アカウントが更新されています。 詳細は、「Oracle Cloud Infrastructureドキュメント」を参照してください。
IAMアイデンティティ・ドメインを使用したクラウド・アカウント
クライアント資格証明を使用したOCMへのアクセス(アイデンティティ・ドメインの2つのレッグOAuth)
このOAuthフローでは、トークンがクライアント・アプリケーションに対してリクエストされ、Oracle Content Management (OCM) APIへのコールはこのクライアント・アプリケーションのトークンを使用して行われます。 このOAuthクライアント・アプリケーションをOCMロールに追加して、適切なOCMアクセスを行う必要があります。
テナントの「アイデンティティ・ドメイン管理者」または「アプリケーション管理者」により、開発者向けのOAuthクライアントが必要な権限で作成されます。
「アイデンティティ・ドメイン管理者」では、次のステップを実行してアクセス・トークンを取得します:
OAuthクライアントを作成してクライアントIDおよびシークレットを取得
テナントのIdentity Domain Administratorまたはアプリケーション管理者は、開発者用のOAuthクライアントを必要な権限で作成します。 これを行うには、次のステップを実行します:
- Oracle Cloudコンソールにサインインします。
https://cloud.oracle.com「アイデンティティ&セキュリティ」にナビゲートします。 「アイデンティティ」で、「ドメイン」を確認します。 アプリケーションの作成時にドメイン(デフォルトまたは新規作成)を選択すると、次の図に示すように、左側のメニューに「アプリケーション」オプションが表示されます。

「図identity-domain.pngの説明」 - 「アプリケーション」セクションで、新しいアプリケーションを追加する場合にクリックします。
- 「機密アプリケーション」を選択します。 機密アプリケーションはOAuth 2.0を使用し、OAuthクライアントIDおよびクライアント・シークレットを保護できます。 機密アプリケーションの詳細は、「機密アプリケーションの追加」を参照してください。
- アプリケーションに名前を付け、オプションで説明を指定し、「次」をクリックします。
- このアプリケーションをクライアントとして構成することを選択します。
- 「認可」画面で、「クライアントの資格証明」権限付与タイプを選択します。
- 「トークン発行ポリシー」セクションまでスクロール・ダウンし、「リソース」で「スコープの追加」をクリックして、アプリケーションに必要なOracle Content Managementインスタンスへのアクセス権を付与します。
- 右矢印をクリックしてスコープを選択します。
必要なスコープは、
urn:opc:cec:allで終わるスコープのみです。その横にあるチェック・ボックスを選択し、「追加」をクリックします。
- トレーニングの最後まで「次」をクリックします。
「リソース」、「Web層ポリシー」および「認可」ストップは、アイデンティティ・ドメインによって認証または認可されたリソースを持つアプリケーション(webアプリケーションなど)に関連しています。 これは、単純なサーバー・サーバー・クライアントの場合には関係ありません。ここで説明します。
- 「終了」をクリックします。
- トークンを後で取得するのに必要なため、「クライアントID」および「クライアント・シークレット」の値に注意してください。
- 「アクティブ化」を選択し、「保存」をクリックしてアプリケーションを有効にします。
クライアントIDおよびシークレットの処理方法を決定できます。
ノート:
通常のユーザーと同様に、クライアント資格証明を持つOAuthクライアントでは、REST APIを使用してコンテンツ管理で処理を実行できるようにするには、Oracle Content Managementインスタンスのオブジェクトに対する関連権限が必要です。 たとえば、コントリビュータ権限を持つリポジトリ・メンバーでアセットを作成するか、リポジトリでマネージャでその設定を変更する必要があります。 Oracle Content Management web UIでは、メンバー・ダイアログを使用して、名前でOAuthクライアントを検索し、必要なオブジェクトに追加できます。 新しく作成したOAuthクライアントは、1時間ごとのアイデンティティ・ドメインの同期が完了した後にのみ検索に表示されます。クライアントへの必要なOracle Content Managementロールの付与
必要なロールは、Oracle Cloud管理コンソールを使用して付与できます。
- Oracle Cloud管理コンソールにサインインします。
- Oracle Cloud Servicesをクリックします。
- 権限が必要なOracle Content Managementサービス・インスタンスを選択します。 このインスタンス名はアカウント管理者から提供されます。
- 「アプリケーション・ロール」をクリックし、右側のバーガー・メニューを右クリックします。
- 「アプリケーションの割当て」を選択します。
- OCMオブジェクトに必要なアクセスに基づいて、クライアント・アプリケーションをロールに割り当てます。 OCMアプリケーション・ロールについては、「アプリケーション・ロール」を参照してください。
- 変更を保存します。
必要なリソースのアイデンティティ・ドメインからのアクセス・トークンの取得
OAuthクライアントからすでに取得したクライアントIDとシークレットを使用して、リソースのAccessTokenを取得します。
アクセス・トークンを取得するサンプルのcurlコマンドは、次のとおりです:
AccessTokenリクエスト
curl -X POST \
https://<idcs tenantname that is protecting this service>/oauth2/v1/token \
-H 'Authorization: Basic <Base64 encoded clientID:clientSecret>' \
-d 'grant_type=client_credentials&scope=<scope string>'curl -X POST 'https://idcs-99463010b1bb495d8db89fd05ebe1d99.identity.dev99.testdev.com/oauth2/v1/token' \
-H 'Authorization: Basic Y2RlNGQyMDZjYTE1NGM2Yjg2NGMyMTJiMjVmMTY3MmE6MWM0ZTAyNGQtZDU4MC00MzEzLWJkZjMtZTQyMGQzMzgzZTY2' \
-d'grant_type=client_credentials&scope=https://50B904E53A6F4EA1B45F30E225EA99B.cec.ocp.oc-test.com:443/urn:opc:cec:all'アイデンティティ・ドメインは、アクセス・トークンのキーと値を返します:
{"access_token":"<access-token-value>}"アクセス・トークン値をコピーできます。
ノート:
リフレッシュ・トークンは、クライアント資格証明の付与タイプ・フローには含まれません。アクセス・トークンを使用したOracle Content Managementリソースへのアクセス
アクセス・トークンを取得したら、Oracle Content Managementエンドポイントを呼び出してリソースにアクセスします。
次に、サンプルのcurlコマンドを示します。
curl -X GET <Oracle-Content-Management-URL>/sites/management/api/v1/sites \
-H 'Authorization: Bearer <Access Token acquired from previous step>'\
-H 'Content-Type: application/json'認可コードを使用したOCMへのアクセス(アイデンティティ・ドメイン内の3本のOAuthフロー)
このフローでは、クライアント・ブラウザで使用されるクライアントIDおよびシークレットを取得するためにクライアント・アプリケーションが作成されます。 次に、クライアント・ブラウザはユーザーをアイデンティティ・ドメインにリダイレクトして、ユーザー名とパスワードでログインします。 認証に成功すると、認証コードがリダイレクトURLとともに送信されます。 アクセス・トークンは、この認可コードを使用してアイデンティティ・ドメインからリクエストされます。 したがって、リソース所有者の資格証明はこのフローでクライアントに公開されることはありません。
これはユーザー・トークンであるため、トークンをリクエストするユーザーには、割り当てられたロールに対してOCMオブジェクトへのユーザーのアクセス権がチェックされるため、関連するOracle Content Managementロールが必要です。
「アイデンティティ・ドメイン管理者」では、次のステップを実行してアクセス・トークンを取得します:
OAuthクライアントを作成してクライアントIDおよびシークレットを取得
テナントのIdentity Domain Administratorまたはアプリケーション管理者は、開発者用のOAuthクライアントを必要な権限で作成します。 これを行うには、次のステップを実行します:
- Oracle Cloudコンソールにサインインします。
https://cloud.oracle.com「アイデンティティ&セキュリティ」にナビゲートします。 「アイデンティティ」で、「ドメイン」を確認します。 アプリケーションの作成時にドメイン(デフォルトまたは新規作成)を選択すると、次の図に示すように、左側のメニューに「アプリケーション」オプションが表示されます。

「図identity-domain.pngの説明」 - 「アプリケーション」セクションで、新しいアプリケーションを追加する場合にクリックします。
- 「機密アプリケーション」を選択します。 機密アプリケーションはOAuth 2.0を使用し、OAuthクライアントIDおよびクライアント・シークレットを保護できます。 機密アプリケーションの詳細は、「機密アプリケーションの追加」を参照してください。
- アプリケーションに名前を付け、オプションで説明を指定し、「次」をクリックします。
- このアプリケーションをクライアントとして構成することを選択します。
- 「認可」画面で、「承認コード」権限付与タイプを選択します。
- 認可後にユーザーをリダイレクトする必要があるURLを指す「リダイレクトURL」値を入力します。
- Oracle Content Managementサービス管理コンソールを指す「ログアウト後のURL」値を入力します。
ノート:
許可コード付与タイプのクライアント・アプリケーションを作成する際は、必須フィールドではありません。 IDCSのドキュメント(「OpenID Connectを使用したログアウト」を参照)に示されているように、これは、ログアウト後にリダイレクションが行われるクライアント固有のURLが再度存在する可能性があります。 - 「トークン発行ポリシー」セクションまでスクロール・ダウンし、「リソース」で「スコープの追加」をクリックして、アプリケーションに必要なOracle Content Managementインスタンスへのアクセス権を付与します。
- 右矢印をクリックしてスコープを選択します。
必要なスコープは、
urn:opc:cec:allで終わるスコープのみです。その横にあるチェック・ボックスを選択し、「追加」をクリックします(後でアクセス・トークンのリクエスト中に使用されるようにスコープ文字列を下に注意してください)。
- トレーニングの最後まで「次」をクリックします。
「リソース」、「Web層ポリシー」および「認可」ストップは、アイデンティティ・ドメインによって認証または認可されたリソースを持つアプリケーション(webアプリケーションなど)に関連しています。 これは、単純なサーバー・サーバー・クライアントの場合には関係ありません。ここで説明します。
- 「終了」をクリックします。
- トークンを後で取得するのに必要なため、「クライアントID」および「クライアント・シークレット」の値に注意してください。
- 「アクティブ化」を選択し、「保存」をクリックしてアプリケーションを有効にします。
クライアントは、「クライアントID」および「クライアント・シークレット」の値を資格証明ストアに安全に格納できます。
クライアントへの必要なOracle Content Managementロールの付与
必要なOCMロールをユーザーに付与するには、Oracle Cloud管理コンソールを使用します。
- Oracle Cloud管理コンソールにサインインします。
- Oracle Cloud Servicesをクリックします。
- 権限が必要なOracle Content Managementサービス・インスタンスを選択します。 このインスタンス名はアカウント管理者から提供されます。
- 「Application Roles」をクリックします。
- 右側のバーガー・メニューを右クリックします。 「ユーザーの割当て」を選択します。
- OCMオブジェクトに必要なアクセスに基づいて、ユーザーをロールに割り当てます。 OCMアプリケーション・ロールの詳細は、「アプリケーション・ロール」を参照してください。
- 変更を保存します。
必要なリソースのアイデンティティ・ドメインからのアクセス・トークンの取得
アクセス・トークンを取得するには、複数のステップを実行します:
- 顧客のアプリケーションのUIによって、アイデンティティ・ドメインに対するユーザーの認可コード・リクエストが作成されます。
- UIは、次に示すURLを使用してアイデンティティ・ドメインへのGETコールを行います。 認可は必要ありません(これはログインUIをオープンするため、ブラウザを介してアクセスする必要があります。この場合、Postmanは機能しません)。
nonce-valueおよびstateはオプションです。https://<IDCS-service-instance>/oauth2/v1/authorize?client_id=<clientid>&response_type=code&redirect_uri=<client-redirect-uri>&scope=<scope string from Step 9 of Create oauth client>&nonce=<nonce-value>&state=1234例:
https://idcs-4c463010b1bb495d8db89fd05ebe1d99.identity.dev99.testdev.com/oauth2/v1/authorize?client_id=51d06799e2aa4c749a79276cf7d24ca7&response_type=code&redirect_uri=https://p2qaextradp1srvc1-qucm2019927ac99.cec.ocp.oc-test.com/documents&scope=https://50B904E53A6F4EA1B45F30E225E6C99B.cec.ocp.oc-test.com:443/urn:opc:cec:all&nonce=12345&state=12345 - アイデンティティ・ドメインにはログインUIが表示されます。
- ユーザーはログインUIにログインします。 次に示すように、アイデンティティ・ドメインは、認可コードを使用してURLをリダイレクトします:
<redirection_url>?code=<auth_code>&state=12345例:
https://p2qaextradp1srvc1-qucm2019927ac99.cec.ocp.oc-test.com/documents?code=AgAgZTM5MGMzODVjNzY3NGZhNzgzMmExMTI0YmU1ZDBiOTYIABC_fyt25KEcHP9-Hmjkh9y1AAAAMPia8fMCbuzkdk10_CzsrqZ-EtGwsI_MCPFr1Y3gt25EhrhYH65mb7vkJmPvUeKdTg&state=12345
- UIは、次に示すURLを使用してアイデンティティ・ドメインへのGETコールを行います。 認可は必要ありません(これはログインUIをオープンするため、ブラウザを介してアクセスする必要があります。この場合、Postmanは機能しません)。
- UIは、ユーザー・トークンを取得するためにアイデンティティ・ドメインをコールし、前のステップで取得した
auth_codeを次のペイロードで渡します:Authorization: Basic <Base64 encoded clientID:clientSecret> Method: Post URL: https://<IDCS-service-instance>/oauth2/v1/token BODY (as form data): grant_type=authorization_code&code=<auth_code>例:
curl -X POST 'https://idcs-4c463010b1bb495d8db89fd05ebe1d99.identity.dev99.testdev.com/oauth2/v1/token' \ -H 'Authorization: Basic NTFkMDY3OTllMmFhNGM3NDlhNzkyNzZjZjdkMjRjYTY6YjZhMzc4ZmQtZjk2Mi00MTg3LWE2NzctYTBmMGI3NmEzODhj' \ -d 'grant_type=authorization_code&code=AgAgZTM5MGMzODVjNzY3NGZhNzgzMmExMTI0YmU1ZDBiOTYIABC_fyt25KEcHP9-Hmjkh9y1AAAAMPia8fMCbuzkdk10_CzsrqZ-EtGwsI_MCPFr1Y3gt25EhrhYH65mb7vkJmPvUeKdTg'アイデンティティ・ドメインは、アクセス・トークンのキーと値を返します:{"access_token":"<access-token-value>"}アクセス・トークン値をコピーできます(アクセス・トークンの失効は7日に設定され、リフレッシュ・トークンは14日に設定されます)。
ノート:
アクセス・トークンとともにリフレッシュ・トークンを作成する必要がある場合は、次の2つの追加タスクを実行する必要があります:- OAuthクライアントの作成時に、権限タイプ許可コードを選択することに加えて(「OAuthクライアントを作成してクライアントIDおよびシークレットを取得」のステップ5を参照)、「リフレッシュ」も選択する必要があります。
- 認可コードのリクエスト中に、次に示すように、追加のスコープ
offline_accessをurn:opc:cec:all(スコープはスペースで区切られている)とともに指定する必要があります:https://idcs-4c463010b1bb495d8db89fd05ebe1d99.identity.dev99.testdev.com/oauth2/v1/authorize?client_id=51d06799e2aa4c749a79276cf7d24ca7&response_type=code&redirect_uri=https://p2qaextradp1srvc1-qucm2019927ac99.cec.ocp.oc-test.com/documents&scope=https://50B904E53A6F4EA1B45F30E225E6C99B.cec.ocp.oc-test.com:443/urn:opc:cec:all offline_access&nonce=12345&state=12345その後、
/oauth2/v1/tokenでこの認可コードを使用すると、アクセス・トークンとともにリフレッシュ・トークンが返されます。
アクセス・トークンを使用したOracle Content Managementリソースへのアクセス
アクセス・トークンを取得したら、Oracle Content Managementエンドポイントを呼び出してリソースにアクセスします。
次に、サンプルのcurlコマンドを示します。
curl -X GET <Oracle-Content-Management-URL>/content/management/api/v1.1/channels \
-H 'Authorization: Bearer <Access Token acquired from previous step>'\
-H 'Content-Type: application/json'リソース所有者を使用したOCMへのアクセス(アイデンティティ・ドメイン)
このフローでは、リソース所有者の資格証明がクライアントに公開されます。 /oauth2/v1/token APIで資格証明が渡されるため、クライアントがアクセス・トークンを取得した後にパスワードを破棄する必要があるため、リソース所有者がこのAPIコールを行うクライアントとの信頼関係を持つことが重要です。
これはユーザー・トークンであるため、トークンをリクエストするユーザーは、OCMオブジェクトへのユーザーのアクセス権が割り当てられたロールと照合されるため、関連するOCMロールを持っている必要があります。
リソース所有者権限付与を許可する機密アプリケーションを構成する手順は次のとおりです:
- Oracle Cloud管理コンソールへのサインイン:
https://cloud.oracle.com - 「アプリケーション」セクションで、新しいアプリケーションを追加する場合にクリックします。
- 「機密アプリケーション」を選択します。 機密アプリケーションはOAuth 2.0を使用し、OAuthクライアントIDおよびクライアント・シークレットを保護できます。 機密アプリケーションの詳細は、「機密アプリケーションの追加」を参照してください。
- アプリケーションに名前を付け、オプションで説明を指定し、「次」をクリックします。
- このアプリケーションをクライアントとして構成することを選択します。
- 「認可」画面で、「リソース所有者」権限付与タイプを選択します。
- 「トークン発行ポリシー」セクションまでスクロール・ダウンし、「リソース」で「スコープの追加」をクリックして、必要なOracle Content Managementインスタンスへのアプリケーション・アクセス権を付与します。
- 正しいインスタンスを選択します。
- 右矢印をクリックしてスコープを選択します。
urn:opc:cec:allで終わるもののみがスコープで必須です。 その横にあるチェック・ボックスを選択し、「追加」をクリックします(後でアクセス・トークンのリクエスト中に使用されるようにスコープ文字列を下に注意してください)。 - トレーニングの最後まで「次」をクリックします。 「リソース」、「Web層ポリシー」および「認可」ストップは、アイデンティティ・ドメインによって認証または認可されたリソースを持つアプリケーション(webアプリケーションなど)に関連しています。 ここで説明する単純なサーバー・サーバー・クライアントの場合は、これは関係ありません。
- 「終了」をクリックします。
- トークンを後で取得するのに必要なため、「クライアントID」および「クライアント・シークレット」の値に注意してください。
- 「アクティブ化」を選択し、「保存」をクリックしてアプリケーションを有効にします。
トークンをリクエストするには:
<domain URL>にフォームを投稿します。 ドメインURLについては、下記の図を参照してください。
- 次の表に、フィールドの説明を示します。
フィールド 値 grant_type password scope 前に追加したスコープは、ステップ9で、たとえば: https:// 1DF8AB52D0FF48F6992EEA3A5715B66F.cec.dev.ocp.octest. com:443/urn:opc:cec:allusername トークンを生成するユーザー名。 password 前のフィールドにおけるユーザー名のパスワード。 POST /oauth2/v1/token HTTP/1.1 Host: <iam-domain-host> Authorization: Basic NTZkZWJjY2EzYjc0NDRlMWFhNjg4OGQ0ZTYzY2Y1M2Y6NDYxYzM5YjctMzJiZC00NGE0LTk4NTc tN WM1NzAyMWMzNDg4 Accept: */* Content-Type: application/x-www-form-urlencoded Content-Length: 162 grant_type=password&scope=https%3A%2F %2F1DF8AB52D0FF48F6992EEA3A5715B66F.cec. dev.ocp.octest. com%3A443%2Furn%3Aopc%3Acec%3Aall&username=<user-name>&password=<password>これにより、トークンがaccess_tokenフィールドの値であるJSONテキストが生成されます:{ "access_token": "eyJ4NXQjUzI1NiI6IkhoRktIMFFGeHR1UDkxLWg3QlJKSUFDMU50V2R...HUQmto_oELyjRaBp qhI75hQJYLWRKm6ozPS57tR1EYHmWABgYw_XALMT1kMuIuRxpGB2ozngpajzNNBBu2qtKg10- RzBTulKaxD25vKK1rznQ3p_XAOLK4CUUM-uG_PUOk49- JDgJjuSI74hLC1kagIlM93A2jUG3g3gdUpUCZPg", "token_type": "Bearer", "expires_in": 604800 }トークンの有効期限は秒単位で指定され、通常は7日間です。
トークンを使用し、REST APIエンドポイントにアクセスするには、前述のようにBearer Authorizationヘッダーを使用します。
ノート:
アクセス・トークンとともにリフレッシュ・トークンを作成する必要がある場合は、次の2つの追加タスクを実行する必要があります:- OAuthクライアントの作成時に、権限タイプ・リソース所有者(「OAuthクライアントを作成してクライアントIDおよびシークレットを取得」のステップ6を参照)を選択するだけでなく、「リフレッシュ・トークン」も選択する必要があります。
- トークンのリクエスト中、次に示すように、追加のスコープ
offline_accessをurn:opc:cec:all(スコープはスペースで区切ります)とともに指定する必要があります:curl -X POST 'https://idcs-4c463010b1bb495d8db89fd05ebe1d99.identity.dev99.testdev.com/oauth2/v1/token' \ -H 'Authorization: Basic NTFkMDY3OTllMmFhNGM3NDlhNzkyNzZjZjdkMjRjYTY6YjZhMzc4ZmQtZjk2Mi00MTg3LWE2NzctYTBmMGI3NmEzODhj' \ -d 'grant_type=password&scope=https://50B904E53A6F4EA1B45F30E225EA99B.cec.ocp.oc-test.com:443/urn:opc:cec:all offline_access&username=John.Doe@test.com&password=johndoepassword#3’
これにより、アクセス・トークンとともにリフレッシュ・トークンが返されます。
Oracle Identity Cloud Serviceを使用したクラウド・アカウント
次の項では、クラウド・アカウントの使用方法について説明します:
クライアント資格証明を使用したOCMへのアクセス(2脚のOAuthフロー)
このOAuthフローでは、トークンがクライアント・アプリケーションに対してリクエストされ、Oracle Content Management (OCM) APIへのコールはこのクライアント・アプリケーションのトークンを使用して行われます。 このOAuthクライアント・アプリケーションは、適切なOCMアクセスができるように、Oracle Identity Cloud Service (IDCS)のOCMロールに追加する必要があります。
テナントの「アイデンティティ・ドメイン管理者」または「アプリケーション管理者」は、必要な権限を持つ開発者のOAuthクライアントを作成し、次のステップを実行してアクセス・トークンを取得します:
OAuthクライアントを作成してクライアントIDおよびシークレットを取得
テナントのIdentity Domain Administratorまたはアプリケーション管理者は、開発者用のOAuthクライアントを必要な権限で作成します。 これを行うには、次のステップを実行します:
-
IDCS管理コンソールに移動します:
https://<IDCS BaseURL>/ui/v1/adminconsole - 「アプリケーション」セクションで、新しいアプリケーションを追加する場合にクリックします。
- 「機密アプリケーション」を選択します。 機密アプリケーションはOAuth 2.0を使用し、OAuthクライアントIDおよびクライアント・シークレットを保護できます。 機密アプリケーションの詳細は、「機密アプリケーションの追加」を参照してください。
- アプリケーションに名前を付け、オプションで説明を指定し、「次」をクリックします。
- このアプリケーションをクライアントとして構成することを選択します。
- 「認可」画面で、「クライアントの資格証明」権限付与タイプを選択します。
- 「トークン発行ポリシー」セクションまでスクロール・ダウンし、「リソース」で「スコープの追加」をクリックして、アプリケーションに必要なOracle Content Managementインスタンスへのアクセス権を付与します。
- 右矢印をクリックしてスコープを選択します。
必要なスコープは、
urn:opc:cec:allで終わるスコープのみです。その横にあるチェック・ボックスを選択し、「追加」をクリックします。
- トレーニングの最後まで「次」をクリックします。
「リソース」、「Web層ポリシー」および「認可」の停止は、IDCSで認証または認可されるリソースを持つアプリケーション(webアプリケーションなど)に関連しています。 これは、単純なサーバー・サーバー・クライアントの場合には関係ありません。ここで説明します。
- 「終了」をクリックします。
- トークンを後で取得するのに必要なため、「クライアントID」および「クライアント・シークレット」の値に注意してください。
- 「アクティブ化」を選択し、「保存」をクリックしてアプリケーションを有効にします。
ノート:
通常のユーザーと同様に、クライアント資格証明を持つOAuthクライアントでは、REST APIを使用してコンテンツ管理で処理を実行できるようにするには、Oracle Content Managementインスタンスのオブジェクトに対する関連権限が必要です。 たとえば、コントリビュータ権限を持つリポジトリ・メンバーでアセットを作成するか、リポジトリでマネージャでその設定を変更する必要があります。 Oracle Content Management web UIでは、メンバー・ダイアログを使用して、名前でOAuthクライアントを検索し、必要なオブジェクトに追加できます。 新しく作成されたOAuthクライアントは、次の1時間ごとのIDCS同期が完了した後にのみ検索に表示されます。クライアントへの必要なOracle Content Managementロールの付与
必要なロールは、Oracle Identity Cloud Service (IDCS)管理コンソールを使用して付与できます。
- IDCS管理コンソールにログインします。
- Oracle Cloud Servicesをクリックします。
- 権限が必要なOracle Content Managementサービス・インスタンスを選択します。 このインスタンス名はアカウント管理者から提供されます。
- 「アプリケーション・ロール」をクリックし、右側のバーガー・メニューを右クリックします。
- 「アプリケーションの割当て」を選択します。
- OCMオブジェクトに必要なアクセス権限に基づいて、クライアント・アプリケーションをロールに割り当てます。 OCMアプリケーション・ロールについては、「アプリケーション・ロール」を参照してください。
- 変更を保存します。
必要なリソースのOracle Identity Cloud Service (IDCS)からのアクセス・トークンの取得
OAuthクライアントからすでに取得したクライアントIDとシークレットを使用して、リソースのAccessTokenを取得します。
アクセス・トークンを取得するサンプルのcurlコマンドは、次のとおりです:
AccessTokenリクエスト
curl -X POST \
https://<idcs tenantname that is protecting this service>/oauth2/v1/token \
-H 'Authorization: Basic <Base64 encoded clientID:clientSecret>' \
-d 'grant_type=client_credentials&scope=<scope string>'curl -X POST 'https://idcs-99463010b1bb495d8db89fd05ebe1d99.identity.dev99.testdev.com/oauth2/v1/token' \
-H 'Authorization: Basic Y2RlNGQyMDZjYTE1NGM2Yjg2NGMyMTJiMjVmMTY3MmE6MWM0ZTAyNGQtZDU4MC00MzEzLWJkZjMtZTQyMGQzMzgzZTY2' \
-d'grant_type=client_credentials&scope=https://50B904E53A6F4EA1B45F30E225EA99B.cec.ocp.oc-test.com:443/urn:opc:cec:all'IDCSは、アクセス・トークンのキーと値を返します(アクセス・トークンの有効期限は7日に設定されています):
{"access_token":"<access-token-value>}"アクセス・トークン値をコピーできます。
ノート:
リフレッシュ・トークンは、クライアント資格証明の付与タイプ・フローには含まれません。アクセス・トークンを使用したOracle Content Managementリソースへのアクセス
アクセス・トークンを取得したら、Oracle Content Managementエンドポイントを呼び出してリソースにアクセスします。
次に、サンプルのcurlコマンドを示します。
curl -X GET <Oracle-Content-Management-URL>/sites/management/api/v1/sites \
-H 'Authorization: Bearer <Access Token acquired from previous step>'\
-H 'Content-Type: application/json'承認コードを使用したOCMへのアクセス(3脚のOAuthフロー)
このフローでは、クライアントIDとシークレットを取得するためにクライアント・アプリケーションが作成され、クライアント・ブラウザはこれを使用し、ユーザーをIDCSにリダイレクトしてユーザー名とパスワードでログインし、認証に成功すると、リダイレクトURLに認可コードが送信されます。 アクセス・トークンは、この認可コードを使用してIDCSからリクエストされます。 したがって、リソース所有者の資格証明はこのフローでクライアントに公開されません。
これはユーザー・トークンであるため、トークンをリクエストするユーザーは、OCMオブジェクトへのユーザーのアクセス権が割り当てられたロールと照合されるため、関連するOCMロールを持っている必要があります。
「アイデンティティ・ドメイン管理者」では、次のステップを実行してアクセス・トークンを取得します:
OAuthクライアントを作成してクライアントIDおよびシークレットを取得
テナントのIdentity Domain Administratorまたはアプリケーション管理者は、開発者用のOAuthクライアントを必要な権限で作成します。 これを行うには、次のステップを実行します:
-
IDCS管理コンソールに移動します:
https://<IDCS BaseURL>/ui/v1/adminconsole - 「アプリケーション」セクションで、新しいアプリケーションを追加する場合にクリックします。
- 「機密アプリケーション」を選択します。 機密アプリケーションはOAuth 2.0を使用し、OAuthクライアントIDおよびクライアント・シークレットを保護できます。 機密アプリケーションの詳細は、「機密アプリケーションの追加」を参照してください。
- アプリケーションに名前を付け、オプションで説明を指定し、「次」をクリックします。
- このアプリケーションをクライアントとして構成することを選択します。
- 「認可」画面で、「承認コード」権限付与タイプを選択します。
- 認可後にユーザーをリダイレクトする必要があるURLを指す「リダイレクトURL」値を入力します。 顧客のアプリケーションを指す任意のURLにできます。
- Oracle Content Managementサービス管理コンソールを指す「ログアウト後のURL」値を入力します。
ノート:
許可コード付与タイプのクライアント・アプリケーションを作成する際は、必須フィールドではありません。 IDCSのドキュメント(「OpenID Connectを使用したログアウト」を参照)に示されているように、これは、ログアウト後にリダイレクションが行われるクライアント固有のURLが再度存在する可能性があります。 - 「トークン発行ポリシー」セクションまでスクロール・ダウンし、「リソース」で「スコープの追加」をクリックして、アプリケーションに必要なOracle Content Managementインスタンスへのアクセス権を付与します。
- 右矢印をクリックしてスコープを選択します。
必要なスコープは、
urn:opc:cec:allで終わるスコープのみです。その横にあるチェック・ボックスを選択し、「追加」をクリックします(後でアクセス・トークンのリクエスト中に使用されるようにスコープ文字列を下に注意してください)。
- トレーニングの最後まで「次」をクリックします。
「リソース」、「Web層ポリシー」および「認可」の停止は、IDCSで認証または認可されるリソースを持つアプリケーション(webアプリケーションなど)に関連しています。 これは、単純なサーバー・サーバー・クライアントの場合には関係ありません。ここで説明します。
- 「終了」をクリックします。
- トークンを後で取得するのに必要なため、「クライアントID」および「クライアント・シークレット」の値に注意してください。
- 「アクティブ化」を選択し、「保存」をクリックしてアプリケーションを有効にします。
クライアントは、「クライアントID」および「クライアント・シークレット」の値を資格証明ストアに安全に格納できます。
クライアントへの必要なOracle Content Managementロールの付与
必要なOCMロールをユーザーに付与するには、Oracle Identity Cloud Service (IDCS)管理コンソールを使用します。
- IDCS管理コンソールにログインします。
- Oracle Cloud Servicesをクリックします。
- 権限が必要なOracle Content Managementサービス・インスタンスを選択します。 このインスタンス名はアカウント管理者から提供されます。
- 「Application Roles」をクリックします。
- 右のバーガー・メニューを右クリックします。

「図access-rest-apis.pngの説明」 - 「ユーザーの割当て」を選択します。
- OCMオブジェクトに必要なアクセス・レベルに基づいて、ユーザーをロールに割り当てます。 OCMアプリケーション・ロールの詳細は、「アプリケーション・ロール」を参照してください。
- 変更を保存します。
必要なリソースのOracle Identity Cloud Service (IDCS)からのアクセス・トークンの取得
アクセス・トークンを取得するには、複数のステップを実行します:
- 顧客のアプリケーションのUIによって、IDCSへのユーザーの承認コード・リクエストが作成されます。
- UIは、次に示すURLを使用してIDCSへのGETコールを行います。 認可は必要ありません(これはIDCSログインUIをオープンするため、ブラウザからアクセスする必要があります。この場合、Postmanは機能しません)。
nonce-valueおよびstateはオプションです。https://<IDCS-service-instance>/oauth2/v1/authorize?client_id=<clientid>&response_type=code&redirect_uri=<client-redirect-uri>&scope=<scope string from Step 9 of Create oauth client>&nonce=<nonce-value>&state=1234例:
https://idcs-4c463010b1bb495d8db89fd05ebe1d99.identity.dev99.testdev.com/oauth2/v1/authorize?client_id=51d06799e2aa4c749a79276cf7d24ca7&response_type=code&redirect_uri=https://p2qaextradp1srvc1-qucm2019927ac99.cec.ocp.oc-test.com/documents&scope=https://50B904E53A6F4EA1B45F30E225E6C99B.cec.ocp.oc-test.com:443/urn:opc:cec:all&nonce=12345&state=12345 - IDCSはログインUIを示しています。
- ユーザーはログインUIにログインします。 IDCSは、次に示すように、認可コードを使用してURLをリダイレクトします:
<redirection_url>?code=<auth_code>&state=12345例:
https://p2qaextradp1srvc1-qucm2019927ac99.cec.ocp.oc-test.com/documents?code=AgAgZTM5MGMzODVjNzY3NGZhNzgzMmExMTI0YmU1ZDBiOTYIABC_fyt25KEcHP9-Hmjkh9y1AAAAMPia8fMCbuzkdk10_CzsrqZ-EtGwsI_MCPFr1Y3gt25EhrhYH65mb7vkJmPvUeKdTg&state=12345
- UIは、次に示すURLを使用してIDCSへのGETコールを行います。 認可は必要ありません(これはIDCSログインUIをオープンするため、ブラウザからアクセスする必要があります。この場合、Postmanは機能しません)。
- UIは、ユーザー・トークンを取得するためにIDCSをコールし、前のステップで取得した
auth_codeを次のペイロードで渡します:Authorization: Basic <Base64 encoded clientID:clientSecret> Method: Post URL: https://<IDCS-service-instance>/oauth2/v1/token BODY (as form data): grant_type=authorization_code&code=<auth_code>例:
curl -X POST 'https://idcs-4c463010b1bb495d8db89fd05ebe1d99.identity.dev99.testdev.com/oauth2/v1/token' \ -H 'Authorization: Basic NTFkMDY3OTllMmFhNGM3NDlhNzkyNzZjZjdkMjRjYTY6YjZhMzc4ZmQtZjk2Mi00MTg3LWE2NzctYTBmMGI3NmEzODhj' \ -d 'grant_type=authorization_code&code=AgAgZTM5MGMzODVjNzY3NGZhNzgzMmExMTI0YmU1ZDBiOTYIABC_fyt25KEcHP9-Hmjkh9y1AAAAMPia8fMCbuzkdk10_CzsrqZ-EtGwsI_MCPFr1Y3gt25EhrhYH65mb7vkJmPvUeKdTg'IDCSはアクセス・トークンのキーと値を返します:{"access_token":"<access-token-value>"}アクセス・トークン値をコピーできます(アクセス・トークンの失効は7日に設定され、リフレッシュ・トークンは14日に設定されています)。
ノート:
アクセス・トークンとともにリフレッシュ・トークンを作成する必要がある場合は、次の2つの追加タスクを実行する必要があります:- OAuthクライアントの作成時に、権限タイプ許可コードを選択することに加えて(「OAuthクライアントを作成してクライアントIDおよびシークレットを取得」のステップ5を参照)、「リフレッシュ」も選択する必要があります。
- 認可コードのリクエスト中に、次に示すように、追加のスコープ
offline_accessをurn:opc:cec:all(スコープはスペースで区切られている)とともに指定する必要があります:https://idcs-4c463010b1bb495d8db89fd05ebe1d99.identity.dev99.testdev.com/oauth2/v1/authorize?client_id=51d06799e2aa4c749a79276cf7d24ca7&response_type=code&redirect_uri=https://p2qaextradp1srvc1-qucm2019927ac99.cec.ocp.oc-test.com/documents&scope=https://50B904E53A6F4EA1B45F30E225E6C99B.cec.ocp.oc-test.com:443/urn:opc:cec:all offline_access&nonce=12345&state=12345その後、
/oauth2/v1/tokenでこの認可コードを使用すると、アクセス・トークンとともにリフレッシュ・トークンが返されます。
アクセス・トークンを使用したOracle Content Managementリソースへのアクセス
アクセス・トークンを取得したら、Oracle Content Managementエンドポイントを呼び出してリソースにアクセスします。
次に、サンプルのcurlコマンドを示します。
curl -X GET <Oracle-Content-Management-URL>/content/management/api/v1.1/channels \
-H 'Authorization: Bearer <Access Token acquired from previous step>'\
-H 'Content-Type: application/json'リソース所有者を使用したOCMへのアクセス
このフローでは、リソース所有者の資格証明がクライアントに公開されます。 資格証明は、トークンを取得するために/oauth2/v1/token APIで渡されます。 そのため、クライアントがアクセス・トークンの取得後にパスワードを破棄する必要があるため、リソース所有者は、このAPIコールを行うクライアントと信頼関係を持つことが重要です。
これはユーザー・トークンであるため、トークンをリクエストするユーザーには関連するOCMロールが必要です。これは、割り当てられたロールに対してOCMオブジェクトへのユーザーのアクセス権がチェックされるためです。
リソース所有者権限付与を許可する機密アプリケーションを構成する手順は次のとおりです:
- IDCS管理コンソールに移動 :
https://<IDCS BaseURL>/ui/v1/adminconsole - 「アプリケーション」セクションで、新しいアプリケーションを追加する場合にクリックします。
- 「機密アプリケーション」を選択します。 機密アプリケーションはOAuth 2.0を使用し、OAuthクライアントIDおよびクライアント・シークレットを保護できます。 機密アプリケーションの詳細は、「機密アプリケーションの追加」を参照してください。
- アプリケーションに名前を付け、オプションで説明を指定し、「次」をクリックします。
- このアプリケーションをクライアントとして構成することを選択します。
- 「認可」画面で、「リソース所有者」権限付与タイプを選択します。
- 「トークン発行ポリシー」セクションまでスクロール・ダウンし、「リソース」で「スコープの追加」をクリックして、必要なOracle Content Managementインスタンスへのアプリケーション・アクセス権を付与します。
- 正しいインスタンスを選択します。
- 右矢印をクリックしてスコープを選択します。
urn:opc:cec:allで終わるもののみがスコープで必須です。 その横にあるチェック・ボックスを選択し、「追加」をクリックします(後でアクセス・トークンのリクエスト中に使用されるようにスコープ文字列を下に注意してください)。 - トレーニングの最後まで「次」をクリックします。 「リソース」、「Web層ポリシー」および「認可」の停止は、IDCSで認証または認可されるリソースを持つアプリケーション(webアプリケーションなど)に関連しています。 ここで説明する単純なサーバー・サーバー・クライアントの場合は、これは関係ありません。
- 「終了」をクリックします。
- トークンを後で取得するのに必要なため、「クライアントID」および「クライアント・シークレット」の値に注意してください。
- 「アクティブ化」を選択し、「保存」をクリックしてアプリケーションを有効にします。
トークンをリクエストするには:
- クライアント・アプリケーション・クライアントIDおよび基本認証のシークレットを使用してPOSTを
<idcs-base-url>/oauth2/v1/tokenにすることで、トークンを取得します。 ペイロードは次のとおりです:Authorization: Basic <Base64 encoded clientID:clientSecret> Method: Post URL: <idcs-base-url>/oauth2/v1/token BODY (as form data): grant_type=password&scope==<scope string from Step 7 above>&username=<user name>&password=<password> - 次の表に、フィールドの説明を示します。
フィールド 値 grant_type password scope 前にステップ7で追加したスコープ: https:// 1DF8AB52D0FF48F6992EEA3A5715B66F.cec.dev.ocp.octest. com:443/urn:opc:cec:allusername トークンを生成するユーザー名。 password 前のフィールドにおけるユーザー名のパスワード。 例:curl -X POST 'https://idcs-4c463010b1bb495d8db89fd05ebe1d99.identity.dev99.testdev.com/oauth2/v1/token' \ -H 'Authorization: Basic NTFkMDY3OTllMmFhNGM3NDlhNzkyNzZjZjdkMjRjYTY6YjZhMzc4ZmQtZjk2Mi00MTg3LWE2NzctYTBmMGI3NmEzODhj' \ -d 'grant_type=password&scope=https://50B904E53A6F4EA1B45F30E225EA99B.cec.ocp.oc-test.com:443/urn:opc:cec:all&username=John.Doe@test.com&password=johndoepassword#3’これにより、トークンがaccess_tokenフィールドの値であるJSONテキストが生成されます:{ "access_token": "eyJ4NXQjUzI1NiI6IkhoRktIMFFGeHR1UDkxLWg3QlJKSUFDMU50V2R...HUQmto_oELyjRaBp qh I75hQJYLWRKm6ozPS57tR1EYHmWABgYw_XALMT1kMuIuRxpGB2ozngpajzNNBBu2qtKg10- RzBTulKaxD25vKK1rznQ3p_XAOLK4CUUM-uG_PUOk49- JDgJjuSI74hLC1kagIlM93A2jUG3g3gdUpUCZPg", "token_type": "Bearer", "expires_in": 604800 }トークンの有効期限は秒単位で指定され、通常は7日間です。
トークンを使用し、REST APIエンドポイントにアクセスするには、前述のようにBearer認可を使用します。
ノート:
アクセス・トークンとともにリフレッシュ・トークンを作成する必要がある場合は、次の2つの追加タスクを実行する必要があります:- OAuthクライアントの作成時に、権限タイプ・リソース所有者(「OAuthクライアントを作成してクライアントIDおよびシークレットを取得」のステップ6を参照)を選択するだけでなく、「リフレッシュ・トークン」も選択する必要があります。
- トークンのリクエスト中、次に示すように、追加のスコープ
offline_accessをurn:opc:cec:all(スコープはスペースで区切ります)とともに指定する必要があります:curl -X POST 'https://idcs-4c463010b1bb495d8db89fd05ebe1d99.identity.dev99.testdev.com/oauth2/v1/token' \ -H 'Authorization: Basic NTFkMDY3OTllMmFhNGM3NDlhNzkyNzZjZjdkMjRjYTY6YjZhMzc4ZmQtZjk2Mi00MTg3LWE2NzctYTBmMGI3NmEzODhj' \ -d 'grant_type=password&scope=https://50B904E53A6F4EA1B45F30E225EA99B.cec.ocp.oc-test.com:443/urn:opc:cec:all offline_access&username=John.Doe@test.com&password=johndoepassword#3’
これにより、アクセス・トークンとともにリフレッシュ・トークンが返されます。