Mule OpenID Connect OAuth 2.0 Token Enforcement Policy 構築手順(Salesforce編)
はじめに
外部認証サーバを利用したAPIのOAuth認証を構築する機会があったので手順について説明する。
目次
- SFDC:接続アプリケーションを作成する
- SFDC:APIキーを生成する
- Mule:クライアントプロバイダーを設定する
- Mule:API仕様を設定する
- Mule:環境へクライアントプロバイダーを割り当てる(省略)
- Mule:APIインスタンスへクライアントプロバイダーを割り当てる(省略)
- Mule:OpenId Connect access token enforcement Policyを設定する
- Mule:アクセスリクエストを登録する
- POSTMANで操作を確認する
詳細
参考資料
SFDC公式:外部 API ゲートウェイの OpenID Connect 動的クライアント登録
1.SFDC:接続アプリケーションを作成する
クライアントプロバイダー用の接続アプリケーションを作成する。
[設定] > [アプリケーションマネージャ] > [接続アプリケーション] をクリックする。

接続アプリケーションを設定する。

[すべてのトークンを調査]にチェックをする。

2.SFDC:APIキーを生成する

3. Mule:クライアントプロバイダーを設定する
下記のアドレスにアクセスするとクライアントプロバイダーで必要な情報が確認できる。
“https://<私のドメイン名>-dev-ed.my.salesforce.com/.well-known/openid-configuration”

下記の赤枠の部分に設定する。


テンプレートとして参考の設定は以下の通り。
Name: SFDC OIDC Provider
Description: SFDC OIDC Provider
Issuer: https://dev30-masakikawaguchi-dev-ed.my.salesforce.com
Client Registration URL: https://dev30-masakikawaguchi-dev-ed.my.salesforce.com/services/oauth2/register
Authorization Header: Bearer xxxxx00D5h000005QVZG8885h000001AsOyFkF2Mzk1ZAl7jyI08EYz4SHy5sEAGpZ1vlF0VCxbLNmVqKC7mmKvcbUstoxUF7GXxuwDzb0r
Authorize URL: https://dev30-masakikawaguchi-dev-ed.my.salesforce.com/services/oauth2/authorize
Token URL: https://dev30-masakikawaguchi-dev-ed.my.salesforce.com/services/oauth2/token
Token Introspection URL: https://dev30-masakikawaguchi-dev-ed.my.salesforce.com/services/oauth2/introspect
4.Mule:API仕様を設定する
RAMLに登録するSecuritySchemeの設定は以下の通り。

#%RAML 1.0 SecurityScheme
type: OAuth 2.0
description: Apply theOAuth 2.0 security policy to resource methods for authenticating API requests
describedBy:
headers:
Authorization:
description: |
Used to send a valid OAuth 2 access token.
type: string
responses:
401:
description: |
Bad or expired token. This can happen if the API consumer uses a revoked or expired access toke. To fix, you should re-authenticate the user.
403:
description: |
Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here.
securitySchemes:
oauth2: !include securityScheme.raml
securedBy:
- oauth2
7.Mule:OpenId Connect access token enforcement Policyを設定する
OAuth2.0スコープとクライアントIDが利用できないため下記の設定にする。

8.Mule:アクセスリクエストを登録する
クライアントアプリケーションを作成する場合は、APIインスタンスで設定したクライアントプロバイダーの作成画面が表示される。

SFDC用のクライアントプロバイダーの作成画面。SFDCがサポートするGrantTypeのみ表示される。

Muleのクライアントアプリケーションを登録すると、SFDCの接続アプリケーションも作成される。

9.POSTMANで操作を確認する
SFDCでMuleのクライアントアプリケーションのクライアントIDとシークレットを利用して、アクセストークンを取得する。

URL: https://<MyDomain>.my.salesforce.com/services/oauth2/token
HTTP Method: POST
Request:
grant_type: password
client_id: <クライアントパプリケーションのクライアントID>
client_secret: <クライアントパプリケーションのクライアントシークレット>
username: <SFDCユーザID>
password: <SFDCユーザパスワード>
アクセストークンをSFDCのトークン検証エンドポイントで検証した結果、クライアントIDとスコープが設定されてないことが確認できる。

URL: https://<MyDomain>.my.salesforce.com/services/oauth2/introspect
HTTP Method: POST
Request:
token: <Access Token>
client_id: <1.の接続アプリケーションのクライアントID>
client_secret: <1.の接続アプリケーションのクライアントシークレット>
SFDCの認証で発行したアクセストークンを利用してMuleのAPIのレスポンスを受け取ることができた。

付録)クライアントアプリケーションは削除できない。



さいごに
SFDCを外部認証サーバとして利用したOIDCポリシーの設定方法にいて紹介しました。
ぜひ、検証の際はご利用ください。では、






