Flex Gateway新着情報
Governance新着情報
Monitoring API Manager多くのサービスで、OAuth 2.0 認証スキームを使用して、API を操作する場合のセキュリティを向上することができます。多くのコネクタで標準の OAuth 2.0 セットアップを設定することができます。
コネクタの OAuth 2.0 を設定するには、次へのアクセス権が必要です。
OAuth プロバイダー (Okta、Azure AD、Google、PingFederate など)
Anypoint Studio
通常、コネクタの OAuth 2.0 では次の設定項目を使用できます。
OAuth 2.0 認証コード:
名前 | 型 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Consumer Key (コンシューマーキー) |
String (文字列) |
サービスプロバイダーに登録されている OAuth コンシューマーキー。 |
X |
|
Consumer Secret (コンシューマーシークレット) |
String (文字列) |
サービスプロバイダーに登録されている OAuth コンシューマーシークレット。 |
X |
|
Authorization URL (認証 URL) |
String (文字列) |
ユーザーがユーザーログイン情報を入力するためにリダイレクトされるサービスプロバイダーの認証エンドポイント。通常、この URL は |
X |
|
Access Token Url (アクセストークン URL) |
String (文字列) |
アプリケーションにより自動的に認証コードがアクセストークンと交換される、サービスプロバイダーのアクセストークンエンドポイントの URL。 |
X |
|
Scopes (スコープ) |
String (文字列) |
OAuth ダンス時に要求する OAuth スコープのスペース区切りリスト。この値のデフォルトはアノテーションのスコープです。 |
|
|
Resource Owner ID (リソースオーナー ID) |
String (文字列) |
コネクタがリソースにアクセスすることを認証するリソースオーナーのアカウントの ID。 |
OAuth 2.0 コールバック設定:
名前 | 型 | 説明 | デフォルト値 | 必須 |
---|---|---|---|---|
Callback Path (コールバックパス) |
String (文字列) |
OAuth プロバイダーでユーザーが正常に認証された後、ユーザーのブラウザーがリダイレクトされるサーバーパス。通常、コールバックパスは |
X |
|
Authorize Path (認証パス) |
String (文字列) |
ユーザーが OAuth ダンスを開始するサーバーパス。通常、認証パスは |
X |
|
External Callback Url (外部コールバック URL) |
String (文字列) |
OAuth プロバイダーで認証が正常に終了した場合にユーザーのブラウザーがリダイレクトされる、サーバー上の公開されている完全な URL。この項目で [Callback path (コールバックパス)] 項目を上書きすることができます ( |
Anypoint Connector では、OAuth 2.0 ダンスには [Authorization Code Grant (認証コード許可)] フローが使用されます。次の手順は、コネクタの OAuth 2.0 を設定するための一般的なフローを示しています。
ブラウザーで、OAuth ダンスを開始するために [Authorize Path (認証パス)] 項目で指定されたパスに移動します。たとえば、コネクタを localhost
で実行しており、パスが /authorize
に設定され、ポートが 8080
に設定されている場合、http://localhost:8080/authorize
に移動します。
[Authorization URL (認証 URL)]、[Scopes (スコープ)]、[Resource Owner ID (リソースオーナー ID)]、および [Callback Path (コールバックパス)] 項目の値を指定します。OAuth プロバイダーで認証要求を受け入れるには、次の条件が満たされている必要があります。
[Authorization URL (認証 URL)] にユーザーのブラウザーから到達できる。
[Scopes (スコープ)] で指定されたスコープがサポートされている。
[Resource Owner ID (リソースオーナー ID)] (指定されている場合) が OAuth プロバイダーに登録されている。
フル [Callback Path (コールバックパス)] が OAuth プロバイダーに登録されている。
OAuth プロバイダーで受け入れられるユーザー名、パスワード、および他のログイン情報 (2FA 要求など) を入力します。認証が正常に終了したら、アプリケーションがアカウントにアクセスするための許可が OAuth プロバイダーにより求められる場合があります。通常、これは初めての認証時に求められます。
OAuth プロバイダーでユーザーが認証され、コネクタへのアクセスが認証されたら、ユーザーの Web ブラウザーは、OAuth プロバイダーに登録されたコールバック URL (http://localhost:8080/callback
など) にリダイレクトされます。
フローを実行しているユーザーにサーバーとエンドポイントへのアクセス権があることを確認します。ない場合、認証の承認がコネクタに到達しません。
ローカルでのテストでは localhost
を使用できますが、本番環境とクラウドデプロイメントでは localhost
を使用できません。たとえば、コネクタアプリケーションが http://my.server.com
で実行されている場合、http://my.server.com/callback
値を使用して [External Callback Url (外部コールバック URL)] 項目を指定する必要があります。http://my.server.com/callback
URL も OAuth プロバイダーに登録する必要があります。
ユーザーのブラウザーがコールバック URL に正常に到達した場合、コネクタは、[Access Token URL (アクセストークン URL)] 項目で設定された URL を使用して、自動的にアクセストークンと交換される認証コードを取得します。このトークンの有効期間は長く、トークンはコネクタによって無期限に自動更新されます (OAuth プロバイダーで許可されている場合)。
コネクタが完全に認証されました。OAuth プロバイダーで発行された新しいアクセストークンを受け入れるすべてのサービスをコネクタで使用できます。
次の例は、Gmail Connector の OAuth 2.0 を設定する方法を示しています。
Gmail Connector の OAuth プロバイダーを設定するには、Google Cloud コンソールを使用できます。次の手順は、OAuth プロバイダーを設定する方法を示しています。
Gmail API を以前に有効にしていない場合、新しいプロジェクトを作成し、[Enabled APIs & Services (API とサービスを有効化)] メニューセクションで Gmail API を有効にする必要があります。 |
新しいクライアント (コネクタアプリケーション) を Google OAuth 2.0 に追加します。これを行うには、[APIs & Services (API とサービス)] > [Credentials (ログイン情報)] > [Create Credentials (ログイン情報を作成)] > [OAuth Client ID (OAuth クライアント ID)] に移動します。
[Web Application (Web アプリケーション)] 項目を使用して、新しい Web アプリケーションを作成します。
名前 (OAuthDemoApp
など) を入力します。
[Authorized redirect URIs (認証済みリダイレクト URI)] 項目に「\http://127.0.0.1:8080/callback」
の URL を入力します。
[Create (作成)] をクリックし、後で使用する場合に備えて新しいクライアント ID とクライアントシークレットをコピーします。
[OK] をクリックします。
Anypoint Studio または XML を使用して OAuth 2.0 でコネクタを設定します。
次の手順は、Anypoint Studio を使用して OAuth 2.0 でコネクタを設定する方法を示しています。
Studio で Mule プロジェクトを作成します。
[Mule Palette (Mule パレット)] ビューで、[(X) Search in Exchange ((X) Exchange 内を検索)] をクリックします。
[Add Dependencies to Project (連動関係をプロジェクトに追加)] で、検索項目に「gmail」
と入力します。
[Available modules (使用可能なモジュール)] で [Gmail Connector - Mule 4] をクリックします。
[Add (追加)] をクリックします。
[Finish (完了)] をクリックします。
OAuth 2.0 認証コードを設定します。新しい Gmail Connector 接続を作成し、前のセクションのクライアント ID とクライアントシークレットをそれぞれ [Consumer Key (コンシューマーキー)] と [Consumer Secret (コンシューマーシークレット)] として使用します。[Resource Owner ID (リソースオーナー ID)] 項目は空のままにすることができます。
Gmail Connector の [Authorization URL (認証 URL)]、[Access Token URL (アクセストークン URL)]、および [Scopes (スコープ)] 項目の値は事前入力されているため、これ以上のアクションは不要です。ただし、Okta や Ping などのサードパーティ OAuth プロバイダーを使用する別のコネクタをセットアップしている場合は、それぞれの [Authorization URL (認証 URL)]、[Access Token URL (アクセストークン URL)]、および [Scopes (スコープ)] 項目を使用する必要があります。 |
OAuth 2.0 コールバック設定を定義します。新しい [HTTP Listener (HTTP リスナー)] をメッセージフローにドラッグし、[Protocol (プロトコル)] を [HTTP (Default) (HTTP (デフォルト))]
に設定し、[Host (ホスト)] を [localhost]
に設定し、[Port (ポート)] を [8080]
に設定します。
この HTTP リスナーを Gmail Connector 接続設定で選択します。
[Callback path (コールバックパス)] を [callback]
に設定し、[Authorize path (認証パス)] を [authorize]
に設定します。[External Callback Url (外部コールバック URL)] 項目は空のままにすることができます。
アプリケーションを実行します。
次の手順は、XML を使用して OAuth 2.0 でコネクタを設定する方法を示しています。
次の連動関係を pom.xml に追加します。
<dependency>
<groupId>com.mulesoft.connectors</groupId>
<artifactId>mule4-gmail-connector</artifactId>
<version>1.0.5</version>
<classifier>mule-plugin</classifier>
</dependency>
OAuth 2.0 認証コードを設定します。新しい Gmail Connector 接続を作成し、前のセクションのクライアント ID とクライアントシークレットをそれぞれ [Consumer Key (コンシューマーキー)] と [Consumer Secret (コンシューマーシークレット)] として使用します。[Resource Owner ID (リソースオーナー ID)] 項目は空のままにすることができます。
Gmail Connector の [Authorization URL (認証 URL)]、[Access Token URL (アクセストークン URL)]、および [Scopes (スコープ)] 項目の値は事前入力されているため、これ以上のアクションは不要です。ただし、Okta や Ping などのサードパーティ OAuth プロバイダーを使用する別のコネクタをセットアップしている場合は、それぞれの [Authorization URL (認証 URL)]、[Access Token URL (アクセストークン URL)]、および [Scopes (スコープ)] 項目を使用する必要があります。 |
OAuth 2.0 コールバック設定を定義します。新しい [HTTP Listener (HTTP リスナー)] 設定を作成し、[Protocol (プロトコル)] を [HTTP (Default) (HTTP (デフォルト))]
に設定し、[Host (ホスト)] を [localhost]
に設定し、[Port (ポート)] を [8080]
に設定します。
この HTTP リスナーの XML は次のようになります。
<http:listener-config name="HTTP_Listener_config" >
<http:listener-connection host="localhost" port="8080" />
</http:listener-config>
この HTTP リスナーを Gmail Connector 接続設定で選択します。
[Callback path (コールバックパス)] を [callback]
に設定し、[Authorize path (認証パス)] を [authorize]
に設定します。[External Callback Url (外部コールバック URL)] 項目は空のままにすることができます。
Gmail Connector の OAuth 2.0 コールバック設定の XML を次に示します。
<gmail:config name="Gmail_Connector_Config" >
<gmail:oauth2c-connection >
<gmail:oauth-authorization-code consumerKey="YOUR_CLIENT_ID" consumerSecret="YOUR_CLIENT_SECRET" />
<gmail:oauth-callback-config listenerConfig="HTTP_Listener_config" callbackPath="callback" authorizePath="authorize"/>
</gmail:oauth2c-connection>
</gmail:config>
アプリケーションを実行します。
OAuth ダンスを実行し、アプリケーションがコネクタを介して Gmail アカウントにアクセスすることを認証します。次の手順は、OAuth ダンスを実行する方法を示しています。
ブラウザーで、OAuth ダンスを開始するために [Authorize Path (認証パス)] 項目で指定されたパスに移動します。この例では、パスは http://localhost:8080/authorize
です。すべてが正しく設定されたら、Google 認証画面が表示されます。ここで、ユーザーアカウントを選択し、アプリケーションがアカウントにアクセスすることを許可します。Google では、承認を必要とする権限のリストが表示されます。次に例を示します。
この権限は、Gmail Connector 接続設定で定義された [Scopes (スコープ)] 項目によって異なります。デフォルトを受け入れることができますが、アクセス権を制限する必要がある場合は不要なスコープを削除することができます。たとえば、https://www.googleapis.com/auth/gmail.send スコープを削除すると、コネクタでは新しいメールをアカウントから送信できなくなりますが、これにより、Send Message や Send Draft 操作を使用する機能など、コネクタの機能が制限されます。
|
[Allow (許可)] をクリックします。OAuth プロバイダーにより http://127.0.0.1:8080/callback
にリダイレクトされます。これは、OAuth プロバイダーで設定したリダイレクト URI であり、コネクタ設定内で開かれます。OAuth ダンスが正常に終了したら、ブラウザーに [Successfully retrieved access token (アクセストークンを正常に取得しました)]
というメッセージが表示されます。これは、コネクタが完全に認証され、コネクタで Gmail アカウントを使用する準備が整ったことを意味します。
Anypoint Studio を再起動しない限り、またはアクセストークンが期限切れにならない限り、アプリケーションを再度認証する必要はありません。OAuth プロバイダーで更新トークンフローが有効になっている場合、アクセストークンが自動的に更新されます。Google ではこれが自動的にサポートされるため、トークンは無期限に更新されます。
再起動しても認証を保持する必要がある場合、Gmail Connector 接続設定でオブジェクトストアを設定できます。 |
コネクタが機能するようになり認証されました。これで、コネクタを使用してフローをテストできます。次の手順は、一部のメールを取得する方法を示しています。
[HTTP Listener (HTTP リスナー)] をフローにドラッグします。[Path (パス)] を /messages
に設定します。
[List Message] 操作をフローにドラッグします。必須項目は [User Id (ユーザー ID)] のみです。これには、アクセスするユーザーのメールアドレスが含まれます。たとえば、これは、1 つの会社アカウントの下で複数のユーザーが登録されている企業のメールサーバーで役立ちます。自分のメインアカウントからメールを直接取得するには、[User Id (ユーザー ID)] を [me (自分)]
に設定します。必要に応じて、[Max Results (最大結果数)] を低い数に設定することもできます。
プロジェクトを再起動します。
http://localhost:8080/messages
に移動します。メッセージ ID とスレッド ID の JSON 形式のリストが表示されます。Get Message または Get Thread 操作を使用して、これらのメッセージまたはスレッドの詳細を取得できます。
このテスト例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:gmail="http://www.mulesoft.org/schema/mule/gmail" xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/gmail http://www.mulesoft.org/schema/mule/gmail/current/mule-gmail.xsd">
<http:listener-config name="HTTP_Listener_config" >
<http:listener-connection host="localhost" port="8080" />
</http:listener-config>
<gmail:config name="Gmail_Connector_Config">
<gmail:oauth2c-connection >
<gmail:oauth-authorization-code consumerKey="300484156412-lnrscnoef6d4tbla0itv4b7pej0dpr3j.apps.googleusercontent.com" consumerSecret="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" scopes="https://mail.google.com/ https://www.googleapis.com/auth/gmail.addons.current.action.compose https://www.googleapis.com/auth/gmail.addons.current.message.action https://www.googleapis.com/auth/gmail.addons.current.message.readonly https://www.googleapis.com/auth/gmail.compose https://www.googleapis.com/auth/gmail.insert https://www.googleapis.com/auth/gmail.labels https://www.googleapis.com/auth/gmail.modify https://www.googleapis.com/auth/gmail.readonly"/>
<gmail:oauth-callback-config listenerConfig="HTTP_Listener_config" callbackPath="callback" authorizePath="authorize"/>
</gmail:oauth2c-connection>
</gmail:config>
<flow name="oauthFlow" >
<http:listener config-ref="HTTP_Listener_config" path="/messages"/>
<gmail:gmailusersmessageslist config-ref="Gmail_Connector_Config" userIdUriParam="me" maxResultsQueryParam="5"/>
</flow>
</mule>