JWTベアラーフローでSalesforceにアクセスする
はじめに
JWTベアラーフローでSalesforceのOpenIDプロバイダーの動作を確認する機会があり、設定手順を説明する。
目次
- JWT署名用証明書を作成する
- 接続アプリケーションを設定する
- JWTを作成する
- トークンを取得する
- トークンを検証する
手順詳細
1. JWT署名用証明書を作成する
SFDC公式ヘルプ:OAuth 2.0 JWTベアラートークンフロー
JWT署名用の証明書を作成するコマンドは以下の通り。
下記のコマンドを実行すると3つのファイルが作成される。
#秘密鍵(private.pem)の作成
$openssl genrsa -out private.pem 2048
#証明書署名要求(client.csr)の作成
$openssl req -new -key private.pem -out client_crt.pem -subj "/C=JP/ST=Tokyo/L=Kitaku-Ku/O=Salesforce.com/OU=MuleSoft JWT/CN=*.salesforce.com"
#サーバ証明書(client.crt)の作成
$openssl x509 -req -signkey private.pem -in client_crt.pem -out client_jwt.pem -days 36524
2.接続アプリケーションを設定する
JWTベアラーフローでアクセストークンを取得するための接続アプリケーションを作成する。
[アプリケーションマネージャ] 一覧画面 > [新規接続アプリケーション]ボタンを押下する。

| 項目名 | サンプル値 |
|---|---|
| 接続アプリケーション名 | JWT Client |
| 取引先責任者 メール | account@salesforce.com |
| OAuth 設定の有効化 | チェックする |
| コールバック URL | https://salesforce.com/callback ※ 実際に存在しなくても良い |
| デジタル署名を使用 | {client_jwt.pemファイルを指定する} |
| 選択した OAuth 範囲 | APIを使用してユーザデータを管理(api) フルアクセス(full) |
[保存]ボタンを押下すると、接続アプリケーションの詳細画面が表示される。
[API (OAuth 設定の有効化)] > [コンシューマ鍵]をコピーする。
接続アプリケーション詳細画面 > [Manage]ボタンを押下する。
[接続アプリケーションの詳細]画面 > [ポリシーの編集]ボタンを押下する。

[許可されているユーザ]項目 > [管理者が承認したユーザは事前承認済み]を選択する。

[プロファイル]セクションにJWTベアラーフローを利用するユーザのプロファイルを追加する。

3.JWTを作成する
jwt.ioのJWTデバッガーを使って、JWTを生成する。
アルゴリズムをRS256を選択する。

{
"iss": "{接続アプリケーションクライアントID}",
"aud": "https://login.salesforce.com",
"sub": "{SFDCユーザID}",
"exp": "{現在時刻から3分以内のUNIX時間}"
}
4.トークンを取得する
生成したJWTを使ってアクセストークンを取得する。

URL: https://{My domain}.my.salesforce.com/services/oauth2/token
HTTP Method: POST
Header:
Content-Type: application/x-www-form-urlencoded
Request Body:
grant_type: urn:ietf:params:oauth:grant-type:jwt-bearer
assertion: {JWT}
format: json
5.トークンを検証する
JWTベアラーフローで取得したトークンを検証エンドポイントで検証する。

URL: https://{My domain}.my.salesforce.com/services/oauth2/introspect
HTTP Method: POST
Header:
Content-Type: application/x-www-form-urlencoded
Request Body:
token: {access token}
client_id: {接続アプリケーションクライアントID}
client_secret: {接続アプリケーションクライアントシークレット}
補足)件名のURLは組織ID/ユーザIDになっている

さいごに
いかがだったでしょうか。
MuleSoftに関わるとSalesforceのJWTベアラーフローを利用することが多く、備忘録的に書きました。
ぜひ、利用してみてください。では、






