機械翻訳について

Oracle Identity Cloud Service環境でのOAuth 2.0付与の使用

Oracle IntegrationでこのアダプタでOAuth 2.0権限付与タイプを使用するには、次の前提条件を実行する必要があります。

ノート:

次の手順は、Oracle Identity Cloud Serviceを引き続き使用しているクラウド・テナンシに「のみ」適用します。 ほとんどのクラウド・テナンシはアイデンティティ・ドメインに移行されており、異なる構成手順が必要です。 「アイデンティティ・ドメイン環境でのOAuth 2.0権限の使用」を参照してください。 環境が不明な場合は、管理者に確認してください。

ノート:

OAuth 2.0権限を実行する前に、次の制限を理解してください。
  • 外部クライアント・アプリケーションで、システムが作成したOracle Identity Cloud Serviceアプリケーションを使用してOracle Integrationエンドポイントに対する認証を行わないでください。
  • クライアント・アプリケーションのスコープは、そのサービス・インスタンスにデプロイされたすべての統合にアクセスすることです。 統合のサブセットへのアクセスを制限するためのサポートはありません。

すべての権限付与の前提条件

使用する権限タイプごとに次のタスクを実行します。

  • Oracle Identity Cloud Service URLを取得します。
    1. Oracle IntegrationインスタンスのURLに移動します。
      たとえば、Oracle Integrationインスタンスがhttps://myhost.example.com/ic/homeの場合、そのURLに移動すると、次のようなURLにリダイレクトされます:
       https://idcs-c2881.identity.myhost.example.com/ui/v1/signin
    2. /signin/adminconsoleに置き換えて、Oracle Identity Cloud Serviceにアクセスします。
      たとえば:
      https://idcs-c2881.identity.myhost.example.com/ui/v1/adminconsole

      Oracle Identity Cloud Serviceコンソールに再度サインインするように求められます。

    3. アイデンティティ・ドメイン管理者資格証明を使用してOracle Identity Cloud Serviceコンソールにログインします。
  • Oracle Identity Cloud ServiceOracle Integrationアプリケーションを確認します。

    Oracle Integrationインスタンスがプロビジョニングされると、そのOracle Integrationインスタンスに対してOracle Identity Cloud Serviceアプリケーションが作成されます。 アプリケーション名はOICINST_ service_instance_nameです。

    1. Oracleインスタンスにログインして、サービス・インスタンス名を取得します。
      https://myhost.example.com/ic/home
    2. Oracle Identity Cloud Serviceにログインしてアプリケーションを取得します。
    3. 「アプリケーション」に移動し、前述の名前のアプリケーションを検索してアプリケーションにアクセスします。

    または、Oracle Cloudダッシュボードからアプリケーションを見つけることもできます。 Oracle Integrationインスタンスの詳細ページ(この例ではOIC)で「IDCSアプリケーション」リンクをクリックすると、すでに作成されているOracle IntegrationOracle Identity Cloud Serviceアプリケーションがオープンします。
    ステータス、アクティブ、Integration Cloud Edition、サービス識別子、ライセンス、バージョン、機能セット、メッセージ・パックおよびIDCSアプリケーション(選択済)のフィールドが表示された概要タブ

JWTユーザー・アサーションの前提条件

次のタスクを実行します。

  • Oracle Integrationアプリケーションおよびユーザー・ロールを検証します。
    1. Oracle Identity Cloud Serviceアプリケーションで「リフレッシュ・トークンを許可するかどうか」オプションが有効になっていることを確認します。
    2. アプリケーションの「構成」>「リソース」セクションで確認します。 OAuthを使用して統合をトリガーできる特別なスコープが事前定義されていることにも注意してください(urn:opc:resource : consumer::all)。

    3. 適切なユーザーを様々なOracle Integrationロールに追加します。 標準/本番構成の場合は、ServiceUserロールを使用します。 (「Oracle Integration Generation 2のプロビジョニングと管理」Oracle Integrationロール」を参照してください。)
    4. ユーザーを割り当てるには、アプリケーションの「アプリケーション・ロール」セクションに移動します。

  • キーを生成します:
    1. 自己署名キー・ペアを生成します。
      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
    2. 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>
    3. キーストアを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...
    4. 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との統合をトリガーするには、クライアント・アプリケーションが必要です。

    1. Oracle Identity Cloud Serviceコンソールで、「アプリケーション」セクションに移動して、OAuthとの統合をトリガーできる新しいアプリケーションを作成します。


      すべて選択、追加および削除ボタンがあるアプリケーション・ページ。 カーソルを追加ボタンの上に置くと、ツールチップ・アプリケーションの作成が表示されます。

      アプリケーションは機密アプリケーションとして追加されます。


      oauth_grant61.pngの説明は以下のとおりです
      図oauth_grant61.pngの説明

    2. 「詳細」セクションに入力し、「クライアント」セクションに移動します。

    3. 「クライアント」セクションで、「このアプリケーションをクライアントとして構成」を選択し、次を追加します。
      1. 「許可された許可タイプ」「クライアント資格証明」および「JWTアサーション」を選択します。
      2. 「セキュリティ」セクションで、「信頼できるクライアント」を選択し、前の項(「キーの生成 - ステップ2」)で作成した証明書をアップロードします。
      3. 「承認済リソース」セクションで「特定」を選択します。

      4. 「リソース」セクションの下の「スコープの追加」をクリックします。
        スコープの追加ボタン

      5. Oracle Integrationアプリケーションを検索し、>をクリックします。
        このテナントのリソースが表示された「スコープの選択」ページ。 リソース(アプリケーション)を選択して>アイコンをクリックできる表が表示されます。

      6. urn:opc:resource: consumer::allを含むスコープを追加し、>をクリックします。

        urn:opc:resource : consumer::allを含むスコープが追加されます。
        リソース・セクション。スコープの追加ボタンと、リソース、保護およびスコープの列を含む表があります。

      7. 変更を保存します。
    4. ウィザードの残りのステップをスキップして、アプリケーションを保存します。
    5. 使用するアプリケーションをアクティブ化します。
  • 信頼できるパートナとして証明書を追加します:

    署名証明書をアプリケーションにインポートした場合でも、Oracle Identity Cloud Serviceでは、信頼できるパートナ証明書としての証明書も必要です。 前の項で作成した証明書をアップロードします。 (「キーの生成 - ステップ2」を参照してください。)

  • JWTユーザー・アサーションを生成します:
    1. 生成された秘密キーと単純な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には、Oracle Identity Cloud Serviceオーディエンスhttps://identity.oracle.com/を含める必要があります。 署名アルゴリズムはRS256である必要があります。
    • kidは、シグネチャの検証に使用するキーを指定します。 そのため、Oracle Identity Cloud Serviceでアップロードした証明書の別名と一致する必要があります。
  • クライアント・アプリケーションを検証します:
    1. JWTユーザー・アサーションを生成したら、次のようにOracle Identity Cloud Serviceアクセス・トークンを生成します。
      ##Syntax
      curl -i -H 'Authorization: Basic <base64Encoded clientid:secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<IDCS-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)
    2. レスポンスからaccess_tokenを取得します。
      {
          "access_token": "eyJ4NXQjG...dfsdfsFgets2ed",
          "token_type": "Bearer",
          "expires_in": 3600
      }
    3. 認可ヘッダーのaccess_tokenを使用して、Oracle Integrationトリガー・エンドポイントを起動します。
      curl --location --request GET 'https://OIC host/OIC endpoint' \
      --header 'Authorization: Bearer eyJ4NXQjG...dfsdfsFgets2ed'

認証コードの前提条件

次のタスクを実行します。

  • Oracle Integrationアプリケーションおよびユーザー・ロールを検証します:
    1. Oracle Identity Cloud Serviceアプリケーションで「リフレッシュ・トークンを許可するかどうか」オプションが有効になっていることを確認します。
    2. アプリケーションの「構成」>「リソース」セクションを確認します。 OAuthを使用したOracle Integration統合のトリガーを許可する特殊な事前定義スコープ(urn:opc:resource: consumer::all)もあります。

    3. 適切なユーザーを様々なOracle Integrationロールに追加します。 標準/本番構成の場合は、ServiceUserロールを使用します。 (「Oracle Integration Generation 2のプロビジョニングと管理」Oracle Integrationロール」を参照してください。)
    4. ユーザーを割り当てるには、アプリケーションの「アプリケーション・ロール」セクションに移動します。

  • クライアント・アプリケーションを構成します。:

    OAuthとのOracle Integration統合をトリガーできるようにするには、クライアント・アプリケーションが必要です。

    1. Oracle Identity Cloud Serviceコンソールで、「アプリケーション」セクションに移動して、OAuthとのOracle Integration統合をトリガーできる新しいアプリケーションを作成します。
      すべて選択、追加および削除ボタンがあるアプリケーション・ページ。 カーソルを追加ボタンの上に置くと、ツールチップ・アプリケーションの作成が表示されます。

      アプリケーションは機密アプリケーションとして追加されます。
      oauth_grant6.pngの説明は以下のとおりです
      図oauth_grant6.pngの説明

    2. 「詳細」セクションに入力し、「クライアント」セクションに移動します。

    3. 「クライアント」の選択で、「このアプリケーションをクライアントとして構成」を選択し、次を追加します。
      1. 「リフレッシュ・トークン」および「認可コード」 for 「許可された許可タイプ」を選択します。
      2. リダイレクトURLをクライアント・アプリケーションのURL (https://sample_client_app/oauth2/callbackなど)に設定します。 ユーザー・ログイン後、Oracle Identity Cloud Serviceは認可コードを使用してこのURLにリダイレクトします。
      3. 「承認済リソース」セクションで「特定」を選択します。

      4. 「リソース」セクションの下の「スコープの追加」をクリックします。
        リソース・セクションのスコープの追加ボタン。

      5. Oracle Integrationアプリケーションを検索し、>をクリックします。
        このテナントのリソースが表示された「スコープの選択」ページ。 リソース(アプリケーション)を選択して>アイコンをクリックできる表が表示されます。

      6. urn:opc:resource : consumer::allを含むスコープを追加し、>をクリックします。
        選択したリソース(アプリケーション)が表示される「スコープの選択」ページ。 リソースのスコープを選択できる表が表示されます。

        urn:opc:resource : consumer::allを含むスコープが追加されます。
        リソース・セクション。スコープの追加ボタンと、リソース、保護およびスコープの列を含む表があります。

      7. 変更を保存します。
    4. ウィザードの残りのステップをスキップして、アプリケーションを保存します。
    5. 使用するアプリケーションをアクティブ化します。
  • クライアント・アプリケーションを検証します:
    1. 認可コードをフェッチするには、ブラウザから次のリクエストを実行します。
      ##Syntax
      GET https://<IDCS-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://<idcs-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
    2. ユーザーがまだログインしていない場合、Oracle Identity Cloud Serviceはユーザーを認証しようとします。 Oracle Identity Cloud Serviceは、ユーザー資格証明をチェックします。 (認証の場合、ServiceUserロールが割り当てられたユーザーを使用する必要があります。)
      認証が成功すると、Oracle Identity Cloud Serviceは、認可コードと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.
    3. 前述のレスポンスからコード値を取得し、Oracle Identity Cloud Serviceに次のリクエストを実行してアクセス・トークンを取得します。
      ##Syntax
      curl -i -H 'Authorization: Basic <base64-clientid-secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<IDCS-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://<idcs_host>/oauth2/v1/token -d 'grant_type=authorization_code&code=AQAg...3jKM4Gc=&redirect_uri=https://app.getpostman.com/oauth2/callback
    4. レスポンスからaccess_tokenおよびrefresh_tokenを取得します。
      {
          "access_token": "eyJ4NXQjG...dfsdfsFgets2ed",
          "token_type": "Bearer",
          "expires_in": 3600,
          "refresh_token": "AQAgY2MzNjVlOTVhOTRh...vM5S0MkrFSpzc="
      }
    5. 認可ヘッダーのaccess_tokenを使用して、Oracle Integrationトリガー・エンドポイントを起動します。
      curl --location --request GET 'https://OIC host/OIC endpoint' \
      --header 'Authorization: Bearer eyJ4NXQjG...dfsdfsFgets2ed'
    6. アクセス・トークンを更新するには、リフレッシュ・トークンを使用してOracle Identity Cloud Serviceにリクエストします。
    7. さらに使用するために、レスポンスから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://<IDCS-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://IDCS-Service-Instance.identity.oraclecloud.com/oauth2/v1/token  -d 'grant_type=refresh_token&refresh_token=AQAgY2MzNjVlOTVhOTRh...vM5S0MkrFSpzc='

リソース所有者のパスワード資格証明の前提条件

次のタスクを実行します。

  • Oracle Integrationアプリケーションおよびユーザー・ロールを検証します:
    1. Oracle Integration Oracle Identity Cloud Serviceアプリケーションで「リフレッシュ・トークンを許可するかどうか」オプションが有効になっていることを確認します。
    2. 「アプリケーション」「構成」>「リソース」セクションを確認します。 また、OAuthとの統合のトリガーを可能にする特別な事前定義済スコープ(urn:opc:resource : consumer::all)もあります。

    3. 適切なユーザーを様々なOracle Integrationロールに追加します。 標準/本番構成の場合は、ServiceUserロールを使用します。 (「Oracle Integration Generation 2のプロビジョニングと管理」Oracle Integrationロール」を参照してください。)
    4. ユーザーを割り当てるには、アプリケーションの「アプリケーション・ロール」セクションに移動します。

  • クライアント・アプリケーションを構成します。:
    1. Oracle Identity Cloud Serviceコンソールで、「アプリケーション」セクションに移動して、OAuthとの統合をトリガーできる新しいアプリケーションを作成します。 アプリケーションは機密アプリケーションとして追加されます。

    2. 「詳細」セクションに入力し、「クライアント」セクションに移動します。

    3. 「クライアント」の選択で、「このアプリケーションをクライアントとして構成」を選択し、次を追加します。
      1. 「リソース所有者」および「リフレッシュ・トークン」 for 「許可された許可タイプ」を選択します。
      2. 「承認済リソース」セクションで「特定」を選択します。

      3. 「リソース」セクションの下の「スコープの追加」をクリックします。
        「トークン発行ポリシー」セクション。認可されたリソース・サブ・セクションには、すべて、タグ付けおよび特定(選択されています)の値があります。 この下には、スコープの追加ボタンがあるリソース・セクションがあります。

      4. Oracle Integrationアプリケーションを検索します。
        このテナントのリソースが表示された「スコープの選択」ページ。 リソース(アプリケーション)を選択して>アイコンをクリックできる表が表示されます。

      5. urn:opc:resource : consumer::allを含むスコープを追加し、>をクリックします。
        選択したリソース(アプリケーション)が表示される「スコープの選択」ページ。 リソースのスコープを選択できる表が表示されます。

        urn:opc:resource : consumer::allを含むスコープが追加されます。
        リソース・セクション。スコープの追加ボタンと、リソース、保護およびスコープの列を含む表があります。

      6. 変更を保存します。
    4. ウィザードの残りのステップをスキップして、アプリケーションを保存します。
    5. 使用するアプリケーションをアクティブ化します。
  • クライアント・アプリケーションを検証します:
    1. アクセス・クライアントをフェッチするには、ペイロードでユーザー名とパスワードを使用してOracle Identity Cloud Serviceにリクエストします。
      ##Syntax
      curl -i -H 'Authorization: Basic <base64Encoded_clientid:secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<IDCS-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 serviceuser 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://<idcs_host>/oauth2/v1/token -d 'grant_type=password&username=sampleUser&password=SamplePassword&scope=https://<Resource_APP_Audience>urn:opc:resource:consumer::all%20offline_access'
    2. レスポンスからaccess_tokenおよびrefresh_tokenを取得します。
      {
          "access_token": "eyJ4NXQjG...dfsdfsFgets2ed",
          "token_type": "Bearer",
          "expires_in": 3600,
          "refresh_token": "AQAgY2MzNjVlOTVhOTRh...vM5S0MkrFSpzc="
      }
    3. 認可ヘッダーのaccess_tokenを使用して、Oracle Integrationトリガー・エンドポイントを起動します。
      curl --location --request GET 'https://OIC host/OIC endpoint' \
      --header 'Authorization: Bearer eyJ4NXQjG...dfsdfsFgets2ed'
    4. アクセス・トークンを更新するには、リフレッシュ・トークンを使用してOracle Identity Cloud Serviceにリクエストします。
    5. レスポンスから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://<IDCS-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://<IDCS-Service-Instance>.identity.oraclecloud.com/oauth2/v1/token  -d 'grant_type=refresh_token&refresh_token=AQAgY2MzNjVlOTVhOTRh...vM5S0MkrFSpzc='