指定ログイン情報の例: 指定ユーザーを使用した OAuth 2.0 ブラウザーフロー
この例では、OAuth 2.0 ブラウザーフローを使用して指定ログイン情報を設定し、GitHub への認証済みコールアウトを実行します。この例では、指定ユーザー ID 種別を使用します。つまり、Salesforce システム管理者が組織のすべてのユーザーに代わって GitHub に対して認証します。
必要なエディション
| 使用可能なインターフェース: Salesforce Classic (使用できない組織もあります) および Lightning Experience |
| 使用可能なエディション: すべてのエディション |
| 使用可能な権限セット: Contact Manager Edition、Group Edition、Professional Edition、Enterprise Edition、Performance Edition、Unlimited Edition、Developer Edition、および Database.com Edition |
| 必要なユーザー権限 | |
|---|---|
| 指定ログイン情報を表示する | 「設定・定義の参照」 |
| 指定ログイン情報を作成、編集、または削除する | 「指定ログイン情報の管理」または「アプリケーションのカスタマイズ」 |
| 権限セットおよびユーザープロファイルを編集する | 「プロファイルと権限セットの管理」 |
これは、Salesforce と GitHub を統合するプロセスです。
- Salesforce で外部認証 ID プロバイダーを設定し、OAuth フローのコールバック URL をコピーします。
- GitHub で、Salesforce への接続用の OAuth アプリケーションを作成します。
- Salesforce で、GitHub アプリケーションのクライアント ID とクライアントの秘密を使用して作成した外部認証 ID プロバイダーを更新します。
- Salesforce で、トークン要求用と更新要求用の Accept ヘッダーを追加します。
- Salesforce で、設定した外部認証 ID プロバイダーを使用する外部ログイン情報を作成します。
- Salesforce で、設定した外部ログイン情報を使用する指定ログイン情報を作成します。
- Salesforce で、外部ログイン情報プリンシパルとユーザーの外部ログイン情報へのアクセス権を付与します。
Apex を使用して OAuth 指定ログイン情報を作成して GitHub に接続するには、『Named Credentials Developer Guide』の「Create an OAuth Named Credential」を参照してください。
Salesforce での外部認証 ID プロバイダーの設定
Salesforce で外部認証 ID プロバイダーを作成します。
- [設定] から、[クイック検索] ボックスを使用して [指定ログイン情報] を見つけて選択します。
- [外部認証 ID プロバイダー] タブをクリックし、[新規] をクリックします。
-
外部認証 ID プロバイダーに GitHubIdp などの名前を付け、プレースホルダー値を他の必須フィールドに入力します。
これらの項目は、GitHub で OAuth アプリケーションを作成した後に更新します。
- [認証プロトコル] のデフォルト値である OAuth 2.0 と、[認証フロー種別] のデフォルト値である [認証コード (ブラウザフロー)] はそのままにします。
-
次に、外部認証 ID プロバイダーの詳細ページで、Salesforce が生成したコールバック URL をコピーします。
GitHub でアプリケーションを作成するときに、このコールバック URL を入力して、自分または他の Salesforce システム管理者が GitHub で認証された後に Salesforce にリダイレクトされるようにします。
GitHub での OAuth アプリケーションの作成
GitHub で OAuth アプリケーションを作成して、GitHub の API へのアクセスを有効にします。
-
GitHub でアプリケーションに「Salesforce」などの名前を付け、Salesforce の外部認証 ID プロバイダーからコピーしたコールバック URL を認証コールバック URL の値として使用します。
GitHub ドキュメントの「OAuth アプリケーションの作成」を参照してください。
-
GitHub アプリケーションを作成したら、アプリケーションの設定からクライアント ID とクライアントの秘密を取得して保存します。
Salesforce で作成した外部認証 ID プロバイダーを更新するときに、次の値を追加します。
Salesforce での外部認証 ID プロバイダーの更新
Salesforce で、GitHub アプリケーションの値と標準 GitHub URL を使用して作成した外部認証 ID プロバイダーを更新します。
-
外部認証 ID プロバイダーの詳細ページで、GitHub から次の値を入力します。
Salesforce 外部認証 ID プロバイダー項目 GitHub の値 クライアント ID クライアント ID クライアントの秘密 クライアントの秘密 承認エンドポイント URL https://github.com/login/oauth/authorize トークンエンドポイント URL https://github.com/login/oauth/access_token - 変更を保存します。
外部認証 ID プロバイダーへのカスタム要求パラメーターの追加
Salesforce で、Accept HTTP ヘッダーを追加して、クライアントが受け入れられるコンテンツタイプを指定します。トークン要求と更新要求の要求パラメーターを 1 つずつ作成します。
-
外部認証 ID プロバイダーの [Custom Request Parameters (カスタム要求パラメーター)] セクションで、[新規] をクリックし、次の項目に入力します。
項目 説明 名前 「Accept」と入力します。 値 「application/json」と入力します。 要求種別 [Token Request] を選択します。 パラメータの場所 [HTTP ヘッダー] を選択します。 - 変更内容を保存します。
-
[Custom Request Parameters (カスタム要求パラメーター)] セクションで、[新規] をクリックし、次の項目に入力します。
項目 説明 名前 「Accept」と入力します。 値 「application/json」と入力します。 要求種別 [更新要求] を選択します。 パラメータの場所 [HTTP ヘッダー] を選択します。 - 変更を保存します。
外部ログイン情報の作成
Salesforce で外部ログイン情報を作成します。外部ログイン情報には、Salesforce がリモートシステムに対して認証を行う方法の詳細が保持されます。GitHub アカウント用に作成した外部認証 ID プロバイダーで OAuth 2.0 ブラウザーフローを使用することをお勧めします。
- [設定] から、[クイック検索] ボックスを使用して [指定ログイン情報] を見つけて選択します。
- [External Credentials (外部ログイン情報)] をクリックし、[新規] をクリックします。
-
項目に入力します。
項目 説明 表示ラベル 「GitHub OAuth」と入力します。
この表示ラベルは、リストビューなどの Salesforce ユーザーインターフェースに表示される、外部ログイン情報のわかりやすい名前です。
名前 「GitHubOAuth」と入力します。
この名前は、コールアウト定義から GitHub に対してこの外部ログイン情報を参照する場合に使用される一意の ID。
認証プロトコル [OAuth 2.0] を選択します。 認証フロー種別 [ブラウザーフロー] を選択します。 ID プロバイダー [外部認証 ID プロバイダー] を選択し、GitHub にアクセスするために作成した外部認証 ID プロバイダーを選択します。 - 外部ログイン情報を保存します。
外部ログイン情報プリンシパルの作成
外部ログイン情報プリンシパルを作成します。プリンシパルは、外部ログイン情報をユーザー権限に対応付けて、ユーザーがリモートシステムへのコールアウトを実行することを承認します。
- 外部ログイン情報の詳細で、[プリンシパル] セクションまでスクロールします。
- プリンシパルを作成するには、[新規] をクリックします。
- プリンシパルの情報を入力します。
項目 説明 パラメーター名 外部システムを参照する名前を入力します (SharedServiceAccount など)。 連番 連番を割り当てます。連番では、ユーザーが参加しているプリンシパルが複数あるときに適用するプリンシパルの順序を指定します。たとえば、ユーザーは、ログイン情報プロバイダーで適用される複数の権限セットに割り当てることができます。優先度は、番号の小さい方が高くなります。 ID 種別 [指定ユーザー] を選択します。
[指定ユーザー] ID 種別を選択すると、組織は 1 つのログインアカウントのみを使用して GitHub 外部システムにアクセスします。
- プリンシパルを保存します。
指定ログイン情報の作成
指定ログイン情報は、コールアウトエンドポイントを指定し、GitHub 外部ログイン情報で定義した認証設定を使用します。
- [設定] から、[クイック検索] ボックスを使用して [指定ログイン情報] を見つけて選択します。
- 指定ログイン情報を作成するには、[新規] をクリックします。
- 項目を入力します。
項目 説明 表示ラベル 「GitHub API」と入力します。
この表示ラベルは、リストビューなどの Salesforce ユーザーインターフェースに表示される、指定ログイン情報のわかりやすい名前です。
名前 「GithubAPI」と入力します。
この名前は、コールアウト定義からこの指定ログイン情報を参照する場合に使用される一意の ID。
URL 「https://api.github.com」と入力します。 外部ログイン情報 作成した GitHub OAuth 外部ログイン情報を選択します。 認証ヘッダーを生成 Salesforce が認証ヘッダーを生成し、この指定ログイン情報を参照する GitHub への各コールアウトに適用するには、このチェックボックスをオンのままにします。 - 変更を保存します。
権限セットの作成とプリンシパルアクセス権の付与
権限セットを使用して、GitHub 外部ログイン情報のプリンシパルへのアクセス権を付与し、ユーザーが GitHub API に対して認証済みコールアウトを実行できるようにします。
ユーザーが外部システムにアクセスできる権限セットがまだない場合は、最初に作成します。「権限セットの作成」を参照してください。
- [設定] から、[クイック検索] ボックスを使用して [権限セット] を見つけて選択します。
- 外部システムへのアクセス用に作成した権限セットをクリックします。
- [アプリケーション] セクションで、[外部ログイン情報プリンシパルアクセス] をクリックします。
- [編集] をクリックします。
- [使用可能な外部ログイン情報プリンシパル] で、GitHub 外部ログイン情報のプリンシパルを選択し、[有効化されたプリンシパル] 列に移動します。プリンシパルの名前は、外部ログイン情報の名前と外部ログイン情報のプリンシパルのパラメーター名から連結されます。この例では、
SharedServiceAccountというパラメーターを持つ外部ログイン情報指定GitHubOAuthの場合、名前はGitHubOAuth - SharedServiceAccountです。 - 変更を保存します。
ほとんどの標準権限セットとプロファイルには、デフォルトでユーザーの外部ログイン情報オブジェクトへのアクセス権があります。これらの権限セットとプロファイルを使用する場合、外部ログイン情報プリンシパルを有効にすることが指定ログイン情報を作成するための最後のステップです。ゲストユーザープロファイルと一部のカスタム権限セットおよびプロファイルでは、これらのユーザーが GitHub に認証済みコールアウトを実行できるように、ユーザーの外部ログイン情報オブジェクト権限を手動で割り当てる必要があります。「ユーザーの外部ログイン情報の有効化」を参照してください。
GitHub への認証
プリンシパルとユーザーの外部ログイン情報へのアクセス権を付与したら、外部ログイン情報でプリンシパルを認証します。
プリンシパルが [指定ユーザー] ID 種別を使用する場合、Salesforce システム管理者は組織のすべてのユーザーに代わって GitHub に対して 1 回認証します。
- [設定] から、[クイック検索] ボックスを使用して [指定ログイン情報] を見つけて選択します。
- [指定ログイン情報] ページで、[外部ログイン情報] をクリックします。
- 作成した外部ログイン情報を選択し、[プリンシパル] セクションまでスクロールします。
- プリンシパルのアクションメニューから、[認証] を選択します。GitHub に移動して認証され、Salesforce にリダイレクトされます。
これで、あなたとユーザーが GitHub への認証済みコールアウトを行うために使用できる指定ログイン情報ができました。『指定ログイン情報開発者ガイド』の「Use the Named Credential in a Callout (コールアウトでの指定ログイン情報の使用)」を参照してください。
