開発者向けの接続アプリケーション

Anypoint Platform には、開発者が機能を拡張するために使用できる 一連の API​ が用意されています。 接続アプリケーション機能では、開発者は API を使用してプログラムで Anypoint Platform とやりとりするアプリケーションにアクセスを委任できます。 接続アプリケーション機能を使用して CI/CD パイプラインをビルドしたり、Anypoint Platform で追加のサードパーティユースケースを製品化したりできます。

ユーザーを認証する新しいフローの有効化に加えて、開発者はクライアントを有効または無効にし、クライアントの使用状況を表示できます。 たとえば、開発者はアプリケーションを使用している組織数とアクセス権を持つユーザー数を確認できます。

接続アプリケーション機能は、OAuth 2.0 と OpenID Connect をサポートします。そのため、開発者はアプリケーションでトークンを使用してユーザーデータへのアクセスを要求できるようにする必要があります。 サポートされる具体的な OpenID Connect の機能を確認するには、 検出エンドポイント​で提供されている情報を参照してください。 エンドポイントのすべてのスコープは、Anypoint Platform で使用可能な権限に直接マップされますが、いくつかの例外が​「エンドポイントのスコープ」​セクションに記載されています。

エンドユーザーに一貫した認証環境を提供するため、独自の Web サイトまたは Web アプリケーションを使用するサードパーティの開発者は、​[Sign in with Anypoint Platform (Anypoint Platform でサインイン)]​ オプションを使用したログインをユーザーに許可できます。

組織のシステム管理者権限を持つ開発者のみが、Anypoint Platform でアプリケーションを作成してアクセススコープを指定できます。

接続アプリケーションの作成

  • 組織が所有できる接続アプリケーションは 2000 個までで、各接続アプリケーションには 1000 個までのスコープを設定できます。

  • アプリケーションは組織が所有します。組織のシステム管理者がそれを制御できます。

  • 一意の ​clientID​ が自動的に割り当てられ、変更できません。​clientSecret​ にはデフォルトで有効期限はありませんが、変更できます。

また、アプリケーションが会社の内部にあるか、組織の外部に配布できるサードパーティのアプリケーションであるかを判断する必要があります。アプリケーションを作成する手順は、次のとおりです。

  1. [Access Management (アクセス管理)] ナビゲーションメニューで、​[Connected Apps (接続アプリケーション)]​ をクリックします。

  2. [Owned Apps (所有アプリケーション)]​ セクションで、​[Create App (アプリケーションを作成)]​ をクリックします。

  3. [Create App (アプリケーションを作成)]​ ページで、次の項目に入力します。

    1. Name (名前)
      アプリケーションの一意の名前。

    2. Type (種別)
      作成する接続アプリケーションの種別。選択した種別に基づいて、必須項目は異なります。

    3. Grant Type (許可種別)
      このアプリケーションで使用する許可種別。
      注意: 選択した許可種別によっては、追加情報が必要になる場合があります。許可種別についての詳細は、​「許可種別とトークンフロー」​を参照してください。

    4. Website URL (Web サイト URL)
      ユーザーはこの URL にアクセスしてアプリケーションの詳細を確認できます。

    5. Redirect URIs (リダイレクト URI)
      認証後にユーザーを誘導する URI を設定します。URL を入力し、​[Add (追加)]​ をクリックしてリストに追加します。

    6. Scopes (スコープ)
      アプリケーションに付与する権限のレベル。​[Add Scopes (スコープを追加)]​ をクリックしてスコープを選択します。詳細は、​「エンドポイントのスコープ」​を参照してください。

  4. [Save (保存)]​ をクリックします。

接続アプリケーションの所有権は、接続アプリケーションを作成したユーザーが次の状態の場合にルート組織のオーナーに移行されます。

  • 削除されている。

  • ルート組織から削除されている。

  • 組織に対する管理者権限を失った。

組織のシステム管理者は、接続アプリケーションのオーナーを編集し、所有権を他のシステム管理者に移行できます。このためには、[Access Management (アクセス管理)] > ​[Connected Apps (接続アプリケーション)]​ > ​[Owned Apps (所有アプリケーション)]​ でアプリケーション名をクリックし、適切な編集を行います。

接続アプリケーションのクライアントシークレットを変更する

  1. [Access Management (アクセス管理)] ナビゲーションメニューで、​[Connected Apps (接続アプリケーション)]​ をクリックします。

  2. リストから接続アプリケーションをクリックして、編集モードを有効にします。

  3. [Secret (シークレット)]​ 項目で、任意のシークレットを入力します。

  4. [Save (保存)]​ をクリックします。

接続アプリケーションの編集モード

+

1 接続アプリケーションのオーナーの名前とユーザー名
2 接続アプリケーションの名前
3 接続アプリケーションの ID
4 接続アプリケーションのクライアントシークレット

アプリケーション許可リスト

組織のシステム管理者権限を持つユーザーは許可リストを有効にして、ユーザーのデータにアクセス可能なアプリケーションを制御できます。 アプリケーションが許可リストに追加されている場合、そのアプリケーションに関連付けられたスコープのセットのみがシステム管理者によって確認および承認されます。 後日アプリケーションに新しいスコープを追加した場合、システム管理者がアプリケーションを再承認するまで、ユーザーからそれらのスコープを要求することはできません。 許可リストに以前に登録されているスコープのセットを使用した既存の認証と新規認証は引き続き機能します。 詳細は、​「システム管理者向けの接続アプリケーション」​を参照してください。

許可種別とトークンフロー

OAuth フレームワーク仕様に、さまざまなユースケースのアクセストークンを取得するためのいくつかの許可種別が説明されています。 Anypoint Platform では、​authorization_code​、​refresh_token​、​password​、​jwt_bearer​、​client_credentials​ 許可種別がサポートされています。 各許可種別の使用方法の詳細と例は、アクセス管理 API の 「Connected App Examples (接続アプリケーションの例)」​を参照してください。

認証コード

authorization_code​ 許可種別は通常、アプリケーションがユーザーのデータにアクセスすることを認証するために使用されます。認証コード許可種別のサンプルフローは次のようになります。

  1. 開発者は、​authorization_code​ 許可種別を使用して、ユーザーの代わりにアクションを実行する接続アプリケーションを作成します。

  2. エンドユーザーは、アプリケーションが自分の代わりにアクションを実行することを認証します。

  3. 認証サーバーは、仮の認証コードをリダイレクト URI に送り返します。

  4. アプリケーションは、その仮のコードを使用して認証サーバーをコールし、アクセストークンを受け取ります。
    これで、アクセストークンを使用して、ユーザーの代わりに Anypoint Platform API をコールできます。

Refresh Token (更新トークン)

refresh_token​ 許可種別は、ユーザーがログインしていないときにユーザーデータへのアクセス権を付与するために使用されます。 OpenID Connect を使用するには、ユーザーデータに継続してアクセスするための最初の認証後に、アプリケーションで更新トークンを新しいアクセストークンとエクスチェンジする必要があります。 更新トークンは 90 日後に期限切れになります。 ユーザーのセッションの有効期限が切れると、アクセストークンは期限切れになります。 アプリケーションが認証コード許可種別を使用している場合、元のアクセストークンが期限切れになった後に ​offline_access​ スコープは更新トークンを使用する必要があります。 新しいアクセストークンを要求するには、​refresh_token​ 許可種別を使用してトークンエンドポイントに要求を送信する必要があります。 認証に成功すると、更新トークンがアクセストークンとエクスチェンジされます。

パスワード

password​ 許可種別は、アプリケーションがユーザーのユーザー名とパスワードをアクセストークンとエクスチェンジするときに使用されます。 アプリケーションはユーザーのログイン情報を収集する必要があり、多要素認証などのメカニズムがないため、この許可種別を使用することはお勧めしません。

JWT ベアラー

jwt_bearer​ (​urn:ietf:params:oauth:grant-type:jwt-bearer​) 許可種別は、アプリケーションが clientSecret などの機密情報を送信せずにアクセストークンを受け取る必要がある場合に使用されます。 信頼済みのクライアントで使用し、ユーザー認証なしで保護されたリソースにアクセスする場合に適しています。 JWT ベアラー許可種別のサンプルフローは次のようになります。

  1. 開発者は、許可種別として ​jwt_bearer​ を使用して、ユーザーの代わりにアクションを実行する接続アプリケーションを作成します。

  2. JWT トークンエクスチェンジは、ペイロード内の次のクレームで発生します。+

    属性 説明

    iss

    クレームの発行者。この値は、接続アプリケーションの ​clientId​ と同じである必要があります。

    sub

    次のようなトークンの件名。

    {version}|{identityProviderId}|{username}|{firstname}|{lastname}|email|externalgroups
    At minimum, identityProvider_id and username are required for sub, as these subjects identify the user in the system.

    aud

    認証サーバー。たとえば、US リージョンの認証サーバーは ​https://anypoint.mulesoft.com/accounts/api/v2/oauth2/token​ です。

  3. アプリケーションは、生成されたアサーションを使用して認証サーバーをコールします。

クライアントログイン情報

client_credentials​ 許可種別は、データへのアクセスに特定のユーザーの権限が不要なマシン間の認証に適しています。 クライアントの ​clientId​ と ​clientSecret​ を使用して、保護されたデータを認証してアクセスします。 サービスアカウントを使用してプログラムで Anypoint Platform をコールする CI/CD パイプラインは、​多要素認証​の設定時にサービスの中断を防ぐために、接続アプリケーションを使用するように設定できます。

エンドポイントのスコープ

検出ポイント​のほとんどのスコープは、Anypoint Platform の既存の権限に直接マップされます。その他の使用可能なスコープは次のように定義されます。

  • full​: ユーザーが可能なすべてのものへのフルアクセス。

  • read:full​: ユーザーが参照可能なすべてのものへの参照のみアクセス。

  • openid​: ユーザーのユーザー名と一意の Anypoint ID への参照のみアクセス。

  • profile​: ユーザーの Anypoint プロファイルへの参照のみアクセス。

  • email​: ユーザーのメールへの参照のみアクセス。

  • offline_access​: ユーザーがログインしていない場合のユーザーのデータへのアクセス。

  • openid:google_wif​: client_credentials​ 接続アプリケーションの OAuth2 トークンフロー中に ​id_token​ とアクセストークンを提供することで、Anypoint を Google Cloud の IdP として設定できます。この ID トークンは、 GCP の WIF 要件​に示されている IdP 要件に準拠します。

client_credentials​ 許可種別を使用するアプリケーションには、常に暗黙的に ​profile​ スコープが割り当てられます。スコープを使用したクエリによって返されるデータは、接続アプリケーションを作成したユーザーに対応します。

接続アプリケーション機能のスコープと権限の詳細は、Access Management のスコープドキュメントページを参照してください。

  1. [Access Management (アクセス管理)] ナビゲーションメニューで、​[Connected Apps (接続アプリケーション)]​ をクリックします。

  2. [Connected Apps (接続アプリケーション)]​ ページで、​[Scopes Documentation (スコープドキュメント)]​ タブをクリックします。
    [Scopes Documentation (スコープドキュメント)]​ ページが表示され、スコープ、それぞれの権限、それぞれが属する製品が表示されます。

  3. 検索バーと検索条件を使用して、名前、表示名、権限メソッド、サポートされているアプリケーション種別、または製品の表示ラベルに基づいてスコープを見つけます。

  4. スコープのリストで、スコープ名をクリックして、関連付けられた権限を表示し、スコープの詳細を確認します。

[Scopes Documentation (スコープドキュメント)]​ ページのコンテンツを絞り込んだり、スコープ名をクリックして名前空間、メソッド、アクションを表示したりできます。

Anypoint Platform ウィジェットを使用したログイン

シームレスな実装のために、開発者は事前作成済みのテンプレートとコンポーネントセットを使用して、アプリケーションのフロントエンドにボタンを統合できます。次のコードを使用して、このウィジェットを追加できます。

<anypoint-signin scopes="full"
redirecturi="...."
clientid="….">
</anypoint-signin>

ボタンを埋め込む方法についての詳細は、 開発者プレイグラウンド​を参照してください。