Oracle Integrationフローを起動するリクエストの認証
統合では、様々なアプリケーションおよびユースケースに適した複数の認証メソッドがサポートされます。 特定の統合のエンドポイント/リスナーを表すトリガー接続として使用されるアダプタは、1つ以上の認証メソッドをサポートできます。
次の各項では、サポートされている各認証メソッドに対するリクエストの送信に必要なユースケース、長所と短所、前提条件および手順について説明します。
統合を起動するリクエストについて
このアダプタをトリガー接続として使用するすべての統合は、HTTP Basic認証およびOAuthトークン・ベース認証を使用してデフォルトで保護されます。
- HTTP Basic認証を使用して、HTTP認可ヘッダーを介してユーザー(アイデンティティ・ドメインに作成される)の資格証明を送信
- OAuth認可プロバイダとして機能するアイデンティティ・ドメインからアクセス・トークンを取得した後、Oracle Integrationエンドポイントの起動中に、ヘッダーにOAuthアクセス・トークンを送信
統合を起動するには、アイデンティティ・ドメインにServiceInvokerロールが必要です。
HTTP Basic認証を使用した統合エンドポイントの起動
この認証メソッドでは、Oracle Integrationユーザーに属する資格証明が、統合を起動するリクエストを送信できます。 このユーザーをアイデンティティ・ドメインに作成し、統合を起動するロールがユーザーに付与されていることを確認する必要があります。
ユーザーは次のいずれかです:
- 人間 - 営業担当、技術者、統合を起動するその他の個人などのビジネス・ユーザーを表します。
- 非人間 - 外部クライアント・アプリケーションが統合を起動するために使用するサービス統合アカウントを表します。
認証スキームを簡単に実装できますが、これは統合を起動するためにOracle Integrationにリクエストを送信する最も安全な方法です。 また、Oracle Integrationは、この認証スキームを推奨しません。
さらに、顧客は、リセット時に、統合を起動するクライアント・アプリケーションに資格証明が提供され、その後新しい資格証明セットが使用されていることを確認する必要があります。
適切なユーザーおよびユーザー・グループを様々なOracle Integrationロールに割り当てます。 標準/本番構成の場合は、ServiceUserロールを使用します。 「Oracle Integration 3のプロビジョニングと管理」の「Oracle Integrationロール」および「グループへのOracle Integrationロールの割当て」を参照してください。
OAuthトークン・ベースの認証を使用した統合エンドポイントの起動
この認証スキームにより、外部クライアントは、統合を起動するために送信されるリクエストの一部としても送信されるトークンを取得できます。
OAuthフロー内でアプリケーションの最も重要なステップは、アプリケーションがアクセス・トークン(オプションでリフレッシュ・トークンとともに)を受け取ることです。 権限付与タイプは、トークンを取得するのに使用されるメカニズムです。 OAuthでは、様々な認可メカニズムを表す複数のアクセス権限付与タイプが定義されています。
アプリケーションは、アイデンティティ・プロバイダで指定された権限タイプのタイプに応じて、様々な方法で保護されたエンドポイントにアクセスするためのアクセス・トークンをリクエストできます。 権限付与とは、保護されているリソースにアクセスするためのリソース所有者の認可を表す資格証明です。
次の各項では、様々な権限付与タイプとその長所/短所、および特定の権限付与タイプの構成方法について説明します。
OAuth 2.0の付与について
Oracle Integrationで使用できるOAuth 2.0付与タイプがいくつかあります。 次の情報を確認して、ユースケースに使用する権限付与タイプを特定します。
| 権限付与タイプ | 権限付与タイプについて | ユースケースとリスク |
|---|---|---|
|
JWTユーザー・アサーション (推奨値) |
ユーザー・アサーションとは、ユーザーに関するアイデンティティ情報を含むユーザー・トークンです。 ユーザーは、特定のコール元アプリケーションを識別するために作成された人間またはサービス統合アカウントを表すことができます。 ユーザー・アサーションは、アクセス・トークンを取得するための許可付与として直接使用されます。 クライアント詳細は、リクエスト内の認証ヘッダーまたはクライアント・アサーションとして指定されます。 ユーザーの資格証明は公開されないため、ユーザー・アサーションの付与はリソース所有者のパスワード資格証明の付与よりも安全です。 ユーザー・アサーション・ワークフロー:
このユーザー・アサーション権限付与は、次のように機能します:
JWTユーザー・アサーションの特性は次のとおりです:
このOAuthフローは次のとおりです。
|
この権限付与は、ユーザーの介入なしで統合をプログラムで起動するアプリケーションで使用されます。 クライアント・アプリケーションは、トークン・アクセスのリクエスト中にユーザー・アサーションをアイデンティティ・ドメインに送信することで、ユーザーを偽装します。 ユーザー・コンテキストでアクセス・トークンが返されます。 ユーザーは、特定のコール元アプリケーションを識別するために作成された人間またはサービス統合アカウントを表すことができます。 Oracle Integrationでは、ユーザーの介入なしで統合をプログラム的に開始する必要があるアプリケーションによるOAuthアクセス・トークンを取得するために、この付与の使用をお薦めします。 リスク (ファースト・パーティ/信頼できるクライアントでのみ)この権限付与を慎重に使用してください。これは、サービスに対するより高度な権限のあるアカウントに対する簡易的な偽装を可能にするためです。 使用方法 「JWTユーザー・アサーションの前提条件」を参照してください。 |
| 認可コード |
許可コード権限付与タイプは、webおよびモバイル・アプリケーションで使用されます。 他のほとんどの権限付与タイプとは異なり、最初にアプリケーションでブラウザを起動して統合を開始する必要があります。 高レベルでは、統合は次のステップで構成されます:
認可コードには、次の特性があります:
このOAuthフローは次のとおりです。
|
この権限は、統合を起動する可能性があるユーザー操作を含むwebポータルやモバイル・アプリケーションなどのアプリケーションで使用されます。 このタイプのユースケースでは、ユーザーがwebポータル/モバイル・アプリケーションにサインインすると、Oracle Integrationに対して認証してアプリケーションが統合を開始できるようにすることで、同意が明示的に提供されます。 使用方法 「認証コードの前提条件」を参照してください。 |
| クライアント資格証明 |
クライアントは、保護されたリソースへのアクセスをリクエストするときに、そのクライアント資格証明(またはサポートされているその他の認証手段)を使用してアクセス・トークンをリクエストします:
機密クライアントのみがこの付与タイプを使用する必要があります。 このOAuthフローは次のとおりです。
|
この権限付与は、通常、クライアントのコンテキストの外部でアクセス・トークンを取得するために使用されます(たとえば、ユーザー・リソースにアクセスするのではなく、自分自身のリソースにアクセスするため)。 使用方法 「クライアント資格証明およびリソース所有者のパスワード資格証明の前提条件」を参照してください。 |
|
リソース所有者のパスワード資格証明(ROPC) (非推奨) |
アクセス・トークンを取得するための認可付与として、OAuthクライアントがリソース所有者のパスワード資格証明(つまり、ユーザー名とパスワード)を直接使用できます。 リソース所有者のパスワード資格証明権限付与タイプは、リソース所有者がOAuthクライアントと信頼関係を持つ場合に適しています。 リソース所有者のパスワード資格証明の付与を使用する場合、ユーザーが資格証明(ユーザー名とパスワード)を直接アプリケーションに指定します。 次に、アプリケーションが資格証明を使用して、OAuthトークン・サービスからアクセス・トークンを取得します。 リソース所有者のパスワード資格証明の付与は、クライアント・アプリケーションがそのクライアント識別子およびシークレットとともにユーザー名とパスワードを送信して、アクセス・トークンと交換する付与ワークフローです。 ユーザーは、webインタフェースでログインして認可リクエストを承認するかわりに、クライアント・アプリケーション・ユーザー・インタフェースでユーザー名とパスワードを直接入力できます。 このワークフローには、他のOAuthワークフローとは異なるセキュリティ・プロパティがあります。 主な違いは、アプリケーションからユーザーのパスワードにアクセスできることです。 このことは、アプリケーションに対するユーザーの強い信頼を必要とします。 リソース所有者のパスワード資格証明の付与には、次の特性があります:
このOAuthフローは次のとおりです。
|
この権限付与は、ユーザーの介入なしでプログラムによって統合を起動するアプリケーションで使用できます。 この権限は、ユーザー資格証明を安全に処理する信頼できるファースト・パーティのクライアントでのみ使用します。 この権限付与タイプは、クライアント・アプリケーションでOAuthアクセス・トークンを取得して、プログラム的な方法で統合を起動するリクエストを送信するために使用できますが、Oracle Integrationは、次のリスクのためにリソース所有者のパスワード資格証明の付与を推奨しません: リスク
使用方法 「クライアント資格証明およびリソース所有者のパスワード資格証明の前提条件」を参照してください。 |
アイデンティティ・ドメイン環境でのOAuth 2.0付与の使用
Oracle Integrationのアイデンティティ・ドメイン環境で、このアダプタでOAuth 2.0権限付与タイプを使用するには、次の前提条件を実行する必要があります。
アイデンティティ・ドメインへのアクセス
- アイデンティティ・ドメイン管理者資格証明を使用して、Oracle Cloud Infrastructureコンソールにログインします。
- ナビゲーション・ペインで、「アイデンティティ&セキュリティ」をクリックします。
- 「ドメイン」をクリックします。
- コンパートメントを選択します。
- アイデンティティ・ドメインを選択します。
- メニュー・バーで、「統合アプリケーション」をクリックします。
これは、権限付与タイプのクライアント・アプリケーションを作成するロケーションです。

JWTユーザー・アサーションの前提条件
キーの生成
JWTユーザー・アサーションのクライアント・アプリケーションを構成するときに、インポートするキーを最初に生成する必要があります。
- 自己署名キー・ペアを生成します。
keytool -genkey -keyalg RSA -alias <your_alias> -keystore <keystore_file> -storepass <password> -validity 365 -keysize 2048 ##example keytool -genkey -keyalg RSA -alias assert -keystore sampleKeystore.jks -storepass samplePasswd -validity 365 -keysize 2048 - JWTアサーションに署名するための公開キーをエクスポートします。
keytool -exportcert -alias <your_alias> -file <filename> -keystore <keystore_file> -storepass <password> ##example keytool -exportcert -alias assert -file assert.cer -keystore sampleKeystore.jks -storepass samplePasswd ## This should show a success message e.g. Certificate stored in file <assert.cer> - キーストアをP12形式に変換します。
keytool -importkeystore -srckeystore <filename> -srcstorepass <password> -srckeypass <password> -srcalias <your_alias> -destalias <your_alias> -destkeystore <destFileName> -deststoretype PKCS12 -deststorepass <password> -destkeypass <password> ##example keytool -importkeystore -srckeystore sampleKeystore.jks -srcstorepass samplePasswd -srckeypass samplePasswd -srcalias assert -destalias assert -destkeystore assert.p12 -deststoretype PKCS12 -deststorepass samplePasswd -destkeypass samplePasswd ## This should show a success message e.g. Importing keystore sampleKeystore.jks to assert.p12... - P12キーストアから秘密キーをエクスポートします。
openssl pkcs12 -in <destFileName> -nodes -nocerts -out <pem_file> ##example openssl pkcs12 -in assert.p12 -nodes -nocerts -out private_key.pem ## This should show a success message: MAC verified OK
クライアント・アプリケーションの構成
OAuthとの統合をトリガーするには、クライアント・アプリケーションが必要です。
- 「Add application」をクリックします。
- 「機密アプリケーション」を選択し、「ワークフローの起動」をクリックします。
- 名前を入力します。 このページの残りのフィールドはオプションであり、無視してかまいません。
- 「送信」をクリックします。
- 「OAuth構成」タブをクリックし、次に「OAuth構成の編集」サブタブをクリックします。
- 「クライアント構成」パネルで、「このアプリケーションをクライアントとして今すぐ構成」を選択します。
- JWTユーザー・アサーションで、「許可された付与タイプ」セクションで「JWTアサーション」および「トークンをリフレッシュ」を選択します。

- 付与タイプに対して次のステップを実行します:
- 「リダイレクトURL」、「ログアウト後リダイレクトURL」および「ログアウトURL」フィールドは空白のままにします。
- 「クライアント・タイプ」セクションで、クライアントが自己署名ユーザー・アサーションを生成し、署名証明書をインポートするための「信頼」を選択します。
- 「証明書」セクションで、セクション「キーの生成」で作成した証明書をインポートします。 このアクションは、証明書を信頼できるパートナとして追加します。
- 複数のフィールドをバイパスし、「トークン発行ポリシー」セクションまで下にスクロールします。
- 「承認済リソース」セクションで「機密」を選択します。
- 「リソースの追加」トグルをクリックします。
- 「スコープの追加」をクリックします。
- インスタンスのOracle Integrationアプリケーションを見つけて展開します。
- 次の詳細が追加された2つのスコープを選択します:
- urn:opc:resource:consumer::all
- ic/api/

- 「追加」をクリックします。
スコープが「リソース」セクションに表示されます。
- 「アプリケーション・ロールの追加」チェック・ボックスを無視します。 この選択は必要ありません。
- 「送信」をクリックします。
クライアント・アプリケーションの詳細ページが表示されます。
- 「アクティブ化」、「アプリケーションのアクティブ化」の順にクリックして、使用するクライアント・アプリケーションをアクティブ化します。
- 「一般情報」セクションで、クライアントIDおよびクライアント・シークレットの値を書き留めます。 これらの値は、アイデンティティ・ドメインと通信しているサード・パーティ・アプリケーションに必要です。

- メニュー・バーで、「Oracleクラウド・サービス」をクリックします。

- Oracle Integrationインスタンスに対応する特定のアプリケーションをクリックします。
- ナビゲーション・ペインで、「アプリケーション・ロール」をクリックします。
- ServiceInvokerを展開し、「割当済アプリケーション」の横にある「アクション」
をクリックします。

- ServiceInvokerを選択し、「ユーザーの管理」または「グループの管理」をクリックします。
- 選択内容に基づいて、「ユーザーの割当」または「グループの割当」をクリックしてユーザーまたはグループを選択し、「割当」をクリックします。
信頼できるパートナとしての証明書の追加
- メニュー・バーで、「セキュリティ」をクリックします。

- 「信頼できるパートナ証明書」セクションまでスクロールします。
- 「証明書のインポート」をクリックして、セクション「キーの生成」で作成した証明書をアップロードします。
JWTユーザー・アサーションの生成
- 生成された秘密キーと単純なJavaコードを使用してJWTユーザー・アサーションを生成します。
ノート:
https://github.com/jwtk/jjwtライブラリを使用して、ユーザー・アサーションを生成できます。 https://jwt.io/には、複数のテクノロジ用に多数のライブラリがリストされています。Sample: header: { "alg": "RS256", "typ": "JWT", "kid": "assert" } payload: { "sub": "ssaInstanceAdmin", "jti": "8c7df446-bfae-40be-be09-0ab55c655436", "iat": 1589889699, "exp": 1589909699, "iss": "d702f5b31ee645ecbc49d05983aaee54", "aud": "https://identity.oraclecloud.com/" }説明:subでは、ユーザー・アサーションが生成されるユーザー名を指定します。jtiは一意の識別子ですiatが発行されます(エポック秒)。expはトークンの有効期限(エポック秒)です。issはクライアントIDです。audには、アイデンティティ・ドメイン・オーディエンスhttps://identity.oracle.com/が含まれている必要があります。 署名アルゴリズムはRS256である必要があります。kidは、シグネチャの検証に使用するキーを指定します。 したがって、アップロードした証明書の別名と一致する必要があります。
クライアント・アプリケーションの検証
- JWTユーザー・アサーションを生成したら、次のようにアクセス・トークンを生成します。
##Syntax curl -i -H 'Authorization: Basic <base64Encoded clientid:secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<Identity_Domain_Service_Instance>.identity.oraclecloud.com/oauth2/v1/token -d 'grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=<user assertion>&scope=<app_scope>' ###where #### grant type - urn:ietf:params:oauth:grant-type:jwt-bearer #### <base64-clientid-secret> - Base 64 encode clientId:ClientSecret #### <user assertion> - User assertion generated #### <app scope> - Scope added while creating application in client configuration section (Ends with urn:opc:resource:consumer::all) - レスポンスから
access_tokenを取得します。{ "access_token": "eyJ4NXQjG...dfsdfsFgets2ed", "token_type": "Bearer", "expires_in": 3600 } - 認可ヘッダーの
access_tokenを使用して、Oracle Integrationトリガー・エンドポイントを起動します。curl --location --request GET 'https://OIC host/OIC endpoint' \ --header 'Authorization: Bearer eyJ4NXQjG...dfsdfsFgets2ed'
クライアント資格証明およびリソース所有者のパスワード資格証明の前提条件
OAuthとの統合をトリガーするには、クライアント・アプリケーションが必要です。 クライアント資格証明およびリソース所有者のパスワード資格証明付与タイプの前提条件は非常に似ています。
クライアント・アプリケーションの構成
- 「Add application」をクリックします。
- 「機密アプリケーション」を選択し、「ワークフローの起動」をクリックします。
- 名前を入力します。 このページの残りのフィールドはオプションであり、無視してかまいません。
- 「送信」をクリックします。
- 「OAuth構成」タブをクリックし、次に「OAuth構成の編集」サブタブをクリックします。
- 「クライアント構成」パネルで、「このアプリケーションをクライアントとして今すぐ構成」を選択します。
- 使用する付与タイプを選択します:
- クライアント資格証明の場合は、「許可された付与タイプ」セクションで「クライアント資格証明」を選択します。

- リソース所有者のパスワード資格証明の場合は、「許可された付与タイプ」セクションで「リソース所有者」および「トークンをリフレッシュ」を選択します。

- クライアント資格証明の場合は、「許可された付与タイプ」セクションで「クライアント資格証明」を選択します。
- どちらの権限タイプに対しても、次のステップを実行します:
- 「リダイレクトURL」、「ログアウト後リダイレクトURL」および「ログアウトURL」フィールドは空白のままにします。
- 「クライアント・タイプ」で、「機密」が選択されていることを確認します。
- 複数のフィールドをバイパスし、「トークン発行ポリシー」セクションまで下にスクロールします。
- 「承認済リソース」セクションで「機密」を選択します。
- 「リソースの追加」トグルをクリックします。
- 「スコープの追加」をクリックします。
- インスタンスのOracle Integrationアプリケーションを見つけて展開します。
- 次の詳細が追加された2つのスコープを選択します:
- urn:opc:resource:consumer::all
- ic/api/

- 「追加」をクリックします。
スコープが「リソース」セクションに表示されます。
- 「アプリケーション・ロールの追加」チェック・ボックスを無視します。 この選択は必要ありません。
- 「送信」をクリックします。
クライアント・アプリケーションの詳細ページが表示されます。
- 上部の「アクション」メニューから、「アクティブ化」、「アプリケーションのアクティブ化」の順に選択して、使用するクライアント・アプリケーションをアクティブ化します。
- 「一般情報」セクションで、クライアントIDおよびクライアント・シークレットの値を書き留めます。 これらの値は、アイデンティティ・ドメインと通信しているサード・パーティ・アプリケーションに必要です。

クライアント・アプリケーションへのロールの追加
- メニュー・バーで、「Oracleクラウド・サービス」をクリックします。

- Oracle Integrationインスタンスに対応する特定のアプリケーションをクリックします。
- メニュー・バーで、「アプリケーション・ロール」をクリックします。
- クライアント資格証明の付与タイプを構成する場合は、次を選択します:
- ServiceInvokerを展開し、「割当済アプリケーション」の横にある「アクション」
をクリックします。

- ユーザー、グループおよびアプリケーションをインスタンス・アプリケーションに割り当てる場合に選択します。
- ServiceInvokerを展開し、「割当済アプリケーション」の横にある「アクション」
- リソース所有者のパスワード資格証明付与タイプを構成する場合は、次を選択します:
- ServiceInvokerを選択し、「ユーザーの管理」または「グループの管理」をクリックします。
- 選択内容に基づいて、「ユーザーの割当」または「グループの割当」をクリックしてユーザーまたはグループをインスタンス・アプリケーションに割り当て、「割当」をクリックします。
- 使用している付与タイプのクライアント・アプリケーションを検証します。
- クライアント資格証明付与タイプの場合:
- アクセス・クライアントをフェッチして、クライアント資格証明を使用してアクセス・トークン・リクエストを作成します。
##Syntax curl -i -H 'Authorization: Basic <base64Encoded clientid:secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<Identity_Domain_Service_Instance>.identity.oraclecloud.com/oauth2/v1/token -d 'grant_type=client_credentials&scope=<app scope>' ###where #### <base64-clientid-secret> - Base 64 encode clientId:ClientSecret #### <app scope> - Scope added while creating application in client configuration section (Ends with urn:opc:resource:consumer::all) ##Example curl -i -H 'Authorization: Basic OGQyM...ZDA0Mjcz' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<identity_domain_host>/oauth2/v1/token -d 'grant_type=client_credentials&scope=https://<Resource APP Audience>urn:opc:resource:consumer::all'Identity_Domain_Service_Instanceは、インスタンス・アプリケーションの「詳細」タブの「ドメインURL」フィールドの値です。
- レスポンスから
access_tokenを取得します。{ "access_token": "eyJ4NXQjG...dfsdfsFgets2ed", "token_type": "Bearer", "expires_in": 3600 } - 認可ヘッダーで
access_tokenを使用して、トリガー・エンドポイントを起動します。curl --location --request GET 'https://OIC host/OIC endpoint' \ --header 'Authorization: Bearer eyJ4NXQjG...dfsdfsFgets2ed'
- アクセス・クライアントをフェッチして、クライアント資格証明を使用してアクセス・トークン・リクエストを作成します。
- リソース所有者のパスワード資格証明付与タイプの場合:
- アクセス・クライアントをフェッチするには、ペイロードでユーザー名とパスワードを使用してリクエストします。
##Syntax curl -i -H 'Authorization: Basic <base64Encoded_clientid:secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<Identity_Domain_Service_Instance>.identity.oraclecloud.com/oauth2/v1/token -d 'grant_type=password&username=<user-name>&password=<password>&scope=<App_Scope>%20offline_access' ###where #### <base64-clientid-secret> - Base 64 encode clientId:ClientSecret #### <username> - user for token needs to be issued (must be in serviceinvoker role). #### <password> - password for above user #### <app_scope> - Scope added while creating application in client configuration section (Ends with urn:opc:resource:consumer::all) ##Example curl -i -H 'Authorization: Basic OGQyM...ZDA0Mjcz' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<identity_domain_host>/oauth2/v1/token -d 'grant_type=password&username=sampleUser&password=SamplePassword&scope=https://<Resource_APP_Audience>urn:opc:resource:consumer::all%20offline_access' - レスポンスから
access_tokenおよびrefresh_tokenを取得します。{ "access_token": "eyJ4NXQjG...dfsdfsFgets2ed", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "AQAgY2MzNjVlOTVhOTRh...vM5S0MkrFSpzc=" } - 認可ヘッダーの
access_tokenを使用して、Oracle Integrationトリガー・エンドポイントを起動します。curl --location --request GET 'https://OIC host/OIC endpoint' \ --header 'Authorization: Bearer eyJ4NXQjG...dfsdfsFgets2ed' - アクセス・トークンを更新するには、リフレッシュ・トークンを使用してリクエストします。
- レスポンスから
access_tokenおよびrefresh_tokenを取得して、さらに使用します。curl -i -H 'Authorization: Basic <base64-clientid-secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<Identity_Domain_Service_Instance>.identity.oraclecloud.com/oauth2/v1/token -d 'grant_type=refresh_token&refresh_token=<refresh_token>' ##Example curl -i -H 'Authorization: Basic OGQyM...ZDA0Mjcz' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<Identity_Domain_Service_Instance>.identity.oraclecloud.com/oauth2/v1/token -d 'grant_type=refresh_token&refresh_token=AQAgY2MzNjVlOTVhOTRh...vM5S0MkrFSpzc='
- アクセス・クライアントをフェッチするには、ペイロードでユーザー名とパスワードを使用してリクエストします。
- クライアント資格証明付与タイプの場合:
認証コードの前提条件
クライアント・アプリケーションの構成
OAuthとの統合をトリガーするには、クライアント・アプリケーションが必要です。
- 「Add application」をクリックします。
- 「機密アプリケーション」を選択し、「ワークフローの起動」をクリックします。
- 名前を入力します。 このページの残りのフィールドはオプションであり、無視してかまいません。
- 「送信」をクリックします。
- 「クライアント構成」ボックスで、「このアプリケーションをクライアントとして構成」を選択します。
- 使用する付与タイプを選択します:
- 認可コードの場合は、「許可された付与タイプ」セクションで「トークンをリフレッシュ」および「承認コード」を選択します。

- 「リダイレクトURL」フィールドに、クライアント・アプリケーションのリダイレクトURLを入力します。 ユーザー・ログイン後、このURLは認可コードでリダイレクトされます。 複数のリダイレクトURLを指定できます。 これは、複数のインスタンスがあるが、ライセンスの問題が原因でクライアント・アプリケーションが1つのみである開発環境に役立ちます。
ノート:
次の情報がわからない場合は、管理者に確認してください:
- インスタンスが新規であるか、Oracle Integration Generation 2からOracle Integration 3にアップグレードされた場合。
- リージョンを含む完全なインスタンスURL (新しいインスタンスで必要)。
接続用… リダイレクトURLの一部としてリージョンを含めますか。 指定するリダイレクトURLの例… 新しいOracle Integration 3インスタンスで作成されます はい https://OIC_instance_URL.region.ocp.oraclecloud.com/icsapis/agent/oauth/callbackOracle Integration Generation 2からOracle Integration 3にアップグレードされたインスタンスで作成されます
番号 このことは両方とも該当します:
- アップグレード後に作成された新しい接続
- アップグレードの一部であった既存の接続
https://OIC_instance_URL.ocp.oraclecloud.com/icsapis/agent/oauth/callback - 「クライアント・タイプ」セクションで、「機密」をクリックします。
- 複数のフィールドをバイパスし、「トークン発行ポリシー」セクションまで下にスクロールします。
- 「承認済リソース」セクションで「機密」を選択します。
- 「リソースの追加」チェック・ボックスをクリックします。
- 「スコープの追加」をクリックします。
- インスタンスのOracle Integrationアプリケーションを見つけて展開します。
- 次の詳細が追加された2つのスコープを選択します:
- urn:opc:resource:consumer::all
- ic/api/

- 「追加」をクリックします。
スコープが「リソース」セクションに表示されます。
- 「アプリケーション・ロールの追加」チェック・ボックスを無視します。 この選択は必要ありません。
- 「送信」をクリックします。
クライアント・アプリケーションの詳細ページが表示されます。
- 「アクティブ化」、「アプリケーションのアクティブ化」の順にクリックして、使用するクライアント・アプリケーションをアクティブ化します。
- 「一般情報」セクションで、クライアントIDおよびクライアント・シークレットの値を書き留めます。 これらの値は、アイデンティティ・ドメインと通信しているサード・パーティ・アプリケーションに必要です。

- 認可コードの場合は、「許可された付与タイプ」セクションで「トークンをリフレッシュ」および「承認コード」を選択します。
Oracle Integrationアプリケーション・ロールおよびユーザー・ロールの検証
- メニュー・バーで、「Oracleクラウド・サービス」をクリックします。

- Oracle Integrationインスタンスに対応する特定のアプリケーションをクリックします。
- ナビゲーション・ペインで、「アプリケーション・ロール」をクリックします。
- ServiceInvokerを展開し、「割当済アプリケーション」の横にある「アクション」
をクリックします。

- インスタンス・アプリケーションのユーザー、グループおよびアプリケーションを管理する場合に選択します。
- 選択内容に基づいて、「ユーザーの割当」または「グループの割当」をクリックしてユーザーまたはグループを選択し、「割当」をクリックします。
クライアント・アプリケーションの検証
- 認可コードをフェッチするには、ブラウザから次のリクエストを実行します。
##Syntax GET https://<Identity_Domain_Service_Instance>.identity.oraclecloud.com/oauth2/v1/authorize?client_id=<client-id>&response_type=code&redirect_uri=<client-redirect-uri>&scope=<app_scope>%20offline_access&nonce=<nonce-value>&state=<unique_value> ###where #### <client-id> - ID of Client application generated. #### <client-redirect-uri> - Redirect URI, in client application. #### <app_scope> - scope added while creating application in client configuration. (Ends with urn:opc:resource:consumer::all) #### nonce - Optional, unique value to mitigate replay attacks #### state - Recommended, Opaque to IDCS. Value used to maintain state between the request and the callback ##Example GET https://<identity_domain_host>/oauth2/v1/authorize?client_id=<clientID>&response_type=code&redirect_uri=https://app.getpostman.com/oauth2/callback&scope=https://<Resource_APP_Audience>urn:opc:resource:consumer::all%20offline_access&nonce=121&state=12345544 - ユーザーがまだログインしていない場合は、ユーザー資格証明の認証が要求されます。 (認証の場合は、ServiceInvokerロールを割り当てられたユーザーを使用する必要があります。)
認証が成功すると、クライアントURLは認可コードおよび状態がURLに追加されてリダイレクトされます。
##Response URL https://<redirect_URL>?code=<code_value>=&state=<state_value> ###Client should validate state received is same as one sent in request. - 前述のレスポンスからコード値を取得し、次のリクエストを実行してアクセス・トークンを取得します。
##Syntax curl -i -H 'Authorization: Basic <base64-clientid-secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<Identity_Domain_Service_Instance>.identity.oraclecloud.com/oauth2/v1/token -d 'grant_type=authorization_code&code=<authz-code>&redirect_uri=<client-redirect-uri> ###where #### <base64-clientid-secret> - BAse 64 encode clientId:ClientSecret #### <authz-code> - code value received as response on redirect. #### <client-redirect-uri> - Redirect URI, in client application. ##Example curl -i -H 'Authorization: Basic MDMx..NGY1' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<identity_domain_host>/oauth2/v1/token -d 'grant_type=authorization_code&code=AQAg...3jKM4Gc=&redirect_uri=https://app.getpostman.com/oauth2/callback - レスポンスから
access_tokenおよびrefresh_tokenを取得します。{ "access_token": "eyJ4NXQjG...dfsdfsFgets2ed", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "AQAgY2MzNjVlOTVhOTRh...vM5S0MkrFSpzc=" } - 認可ヘッダーの
access_tokenを使用して、Oracle Integrationトリガー・エンドポイントを起動します。curl --location --request GET 'https://OIC host/OIC endpoint' \ --header 'Authorization: Bearer eyJ4NXQjG...dfsdfsFgets2ed' - アクセス・トークンを更新するには、リフレッシュ・トークンを使用してリクエストを行います。
- さらに使用するために、レスポンスから
access_tokenおよびrefresh_tokenを取得します。curl -i -H 'Authorization: Basic <base64-clientid-secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<Identity_Domain_Service_Instance>.identity.oraclecloud.com/oauth2/v1/token -d 'grant_type=refresh_token&refresh_token=<refresh_token>' ##Example curl -i -H 'Authorization: Basic OGQyM...ZDA0Mjcz' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<Identity_Domain_Service_Instance>.identity.oraclecloud.com/oauth2/v1/token -d 'grant_type=refresh_token&refresh_token=AQAgY2MzNjVlOTVhOTRh...vM5S0MkrFSpzc='