以前に異なる API 管理ソリューションを使用していた場合には、アプリケーションのクライアントログイン情報が Anypoint Platform の外部で管理されていることがあります。Anypoint Platform でログイン情報を使用するためには、これらのクライアントアプリケーションのクライアント ID とクライアントシークレットログイン情報を使用して、事前にクライアントアプリケーションを Anypoint Platform に移行する必要があります。
クライアントアプリケーションでは、組織が Anypoint Platform クライアントプロバイダーまたは外部クライアントプロバイダーに関連付けられている API をコンシュームできます。それぞれのシナリオの手順は異なります。
スコープと制限
クライアントアプリケーションを Anypoint Platform に移行する前に、次のスコープと制限を確認してください。
-
アプリケーションがコンシュームする API の組織で外部クライアントプロバイダー (例: PingFederate や Okta) が登録されている場合は、「外部クライアントプロバイダーが登録されている組織」を参照してください。
-
アプリケーションのクライアント ID やクライアントシークレットを更新しようとしないでください。
この機能はサポートされていません。
-
クライアント ID は、Anypoint Platform 内では一意です。2 つの異なるアカウントで同じクライアント ID を使用しないでください。
重複を回避するため、アカウントに対しては一意のクライアント ID を指定してください。
-
同じユーザーを使用して 500 件を超えるアプリケーションを作成しないでください。
-
重複する名前のアプリケーションを作成しないでください。
-
クライアント ID を変更する場合は、必ず先にクライアントアプリケーションを削除してから再登録してください。
-
クライアントログイン情報がクライアントプロバイダー上の既存の組織 ID のログイン情報と一致する場合、アプリケーションはそのクライアントに関連付けられます。
反対に、指定したクライアントログイン情報が一致しない場合、クライアントアプリケーションは既存のクライアントには関連付けられずに作成されます。
Anypoint Platform クライアントプロバイダーを使用している API でのクライアントアプリケーションの移行
クライアントアプリケーションを移行するには、次の手順を実行します。
-
テキストエディターを開いて次のコマンドを貼り付けます。
curl --location --request POST 'https://anypoint.mulesoft.com/exchange/api/v1/organizations/:orgId/applications' \ --header 'Authorization: Bearer <omitted>' \ --header 'Content-Type: application/json' \ --data-raw '{ "clientId": <myClientId>, "clientSecret": <myClientSecret>, "grantTypes": [], "name": <myApplicationName>, "redirectUri": [] }' -
orgId パラメーターはルート組織の ID に、本文のコンテンツは適切なアプリケーションプロパティに置き換えます。 -
コマンドプロンプトに対してこのコマンドを実行します。
外部クライアントプロバイダーを使用している API でのクライアントアプリケーションの移行
外部クライアントプロバイダーが登録されている組織に対してアプリケーションを作成する場合は、API インスタンス ID (API Manager UI で取得可能) を使用して、コンシュームする API に直接アプリケーションを関連付けることができます。
PingFederate 外部クライアントプロバイダーまたは Anypoint Platform クライアントプロバイダーを使用している場合は、API の参照時にクライアント ID とクライアントシークレットを含めることができます。OpenID 動的クライアント登録を使用して登録される Okta や Keycloak などのプロバイダーを使用している場合は、クライアント ID とクライアントシークレットログイン情報を定義することはできません。
クライアントアプリケーションを移行するには、次の手順を実行します。
-
テキストエディターを開いて次のコマンドを貼り付けます。
curl --location --request POST 'https://anypoint.mulesoft.com/exchange/api/v1/organizations/:orgId/applications?apiInstanceId=:myApiInstanceId' \ --header 'Authorization: Bearer <omitted>' \ --header 'Content-Type: application/json' \ --data-raw '{ "clientId": <myIdpClientID>, "clientSecret": <myIdpClientSecret>, "grantTypes": [ <grant type item, for example: client_credentials> ], "name": <myApplicationName>, "redirectUri": [ "https://anypoint.mulesoft.com/apiplatform/:orgId/authentication/oauth2.html", "https://anypoint.mulesoft.com/apiplatform/:orgId/admin/authentication/oauth2.html", "https://api-notebook.anypoint.mulesoft.com/authenticate/oauth.html" ] }' -
コマンドスニペットの
orgId パラメーターは組織の ID に、apiInstanceId は API インスタンス ID に、本文のコンテンツは適切なアプリケーションプロパティに置き換えます。 -
コマンドプロンプトに対してこのコマンドを実行します。
移行コマンドプロパティリファレンス
移行コマンドのプロパティには、以下の推奨事項に基づいて値を指定してください。
-
clientId: <クライアント ID> -
clientSecret: <クライアントシークレット> -
(省略可能)
description: <アプリケーション情報の説明>このプロパティはアプリケーションページに表示されます。
-
name: <作成するアプリケーションの名前>このプロパティは、アクセスを要求する前にアプリケーションを選択するときに表示されます。
-
redirectUri: <OAuth 2.0 クライアントとして使用するアプリケーションのリダイレクト URI を含む配列> -
(省略可能)
url: <クライアントアプリケーションの URL>このプロパティはアプリケーションページに表示されます。
-
grantTypes: <Anypoint Platform クライアントプロバイダーの場合は空白の配列、外部クライアントプロバイダーの場合は可能な値の配列>-
Resource Owner Grant: "password" -
Implicit Grant: "implicit" -
Client Credentials Grant "client_credentials" -
Authorization Code: "authorization_code" -
Refresh Token: "refresh_token" (この許可種別を使用するには認証コードが必要です。)
-
外部クライアントプロバイダーでサポートされる許可種別については、クライアントプロバイダーのドキュメントを参照してください。