接続アプリケーションを作成する
学習の目的
このプロジェクトでは、次のことを行います。
- API インテグレーション用の接続アプリケーションを作成する。
- OAuth 2.0 Web サーバーフローを実装する。
- 組織の接続アプリケーションへのアクセスを管理する。
予想されるプロセス
このプロジェクトでは、OAuth 2.0 Web サーバーフローを使用して、API インテグレーション用の接続アプリケーションを作成します。このフローは、認証コード許可種別と呼ばれることもあります。接続アプリケーションを作成した後、認証フローを実装する方法を説明します。その後、OAuth ポリシーを使用して、どのユーザーがどこから接続アプリケーションにアクセスできるかを定義します。
開発者でない場合は?
「接続アプリケーションの基本」モジュールでは、接続アプリケーションの開発者と接続アプリケーションのシステム管理者の責任の違いについて説明しました。もう一度説明すると、接続アプリケーションの開発者とは、接続アプリケーションとして Salesforce データにアクセス可能な API インテグレーションまたは外部アプリケーションを構築する Salesforce の開発者と独立系ソフトウェアベンダー (ISV) です。接続アプリケーションの開発者は、アクセス可能なデータ型の定義など、接続アプリケーションの特性を定義します。実際の作業では、通常、この Trailhead プロジェクトで取り上げるステップ 1 と 2 を実行します。
一方、接続アプリケーションのシステム管理者は、アプリケーションに権限やポリシーを設定します。システム管理者は、接続アプリケーションを誰が使用でき、このアプリケーションにどこからアクセスできるかを明示的に定義します。また、Salesforce 組織の接続アプリケーションのインストールやアンインストール、必要に応じてブロックも行います。実際の作業では、通常、この Trailhead プロジェクトで取り上げる 3 つ目のステップを実行します。
接続アプリケーションに関する役割が開発者であれ、システム管理者であれ、このプロジェクトの 3 つのステップをすべて完了することで必ずメリットを得られます。接続アプリケーションの設定を最初から最後まで行うことで、組織が接続アプリケーションをどのように活用できるのかをより深く理解できます。
常に所有者とコンシューマーを意識する
各自が開発者であるか、システム管理者であるかに加えて、組織が接続アプリケーションの所有者またはコンシューマーのどちらであるかも知っておく必要があります。
組織が接続アプリケーションの所有者として、アプリケーションを作成した場合、アプリケーションの特性を編集し、そのアクセスポリシーを管理できます。たとえば、組織のデータにアクセスするために接続アプリケーションで提供する必要がある情報の種別 (クライアントの秘密など) を決定します。
組織が接続アプリケーションのコンシューマーとして、AppExchange からアプリケーションをインストールしたか、別の組織またはサードパーティベンダーの Web サイトから管理パッケージとしてインストールした場合、アプリケーションのアクセスポリシー (誰がアプリケーションを使用できるかや、アプリケーションがリモートの場所からデータにアクセスできるかどうかなど) のみを編集できます。
では、組織が接続アプリケーションを所有しているかどうかを簡単に知るにはどうすればよいのでしょうか? 最善の方法は、アプリケーションマネージャーで接続アプリケーションを見つけ、その横にあるドロップダウン矢印をクリックし、どのようなオプションが提供されているかを確認する方法です。
次の例では、接続アプリケーションの特性の編集とそのアクセスポリシーの管理の両方が行えるため、組織は [My OAuth Connected App (私の OAuth 接続アプリケーション)] を所有しています。
ただし、Trailhead の接続アプリケーションに関しては、組織はコンシューマーです。そのため、アプリケーションのアクセスポリシーの管理のみが可能です。これは、組織がこの接続アプリケーションを Trailhead から管理パッケージとしてインストールしたためです。
接続アプリケーションで各自とその組織が果たす役割を確認したところで、作成に取りかかりましょう。このステップでは、あなたは接続アプリケーションの開発者であり所有者です。
Trailhead Playground を起動する
このハンズオンプロジェクトの作業は、あなた個人の Salesforce 環境で行います。まず Trailhead にログインしてから、このページの下部にある [Launch (起動)] をクリックし、Trailhead Playground を取得してください。Playground でこのプロジェクトのステップを完了した後、ページの下部にある [Verify Step (ステップを確認)] をクリックしてください。
顧客注文状況データに安全にアクセスする接続アプリケーション
最近、あなたの会社は顧客の注文状況に安全にアクセスできる Web サイトを開発しました。注文状況データは会社の Salesforce CRM プラットフォームに安全に保存されています。
会社のカスタマーサービスマネージャーは、ヘルプデスクユーザーが顧客をサポートする際に顧客注文状況データにアクセスできるようにしたいと考えています。そこで、ヘルプデスクユーザーに注文状況データに安全にアクセスすることを許可するサービスの構築をあなたに依頼しました。
あなたは、Salesforce 接続アプリケーションを使用すれば、外部アプリケーションを Salesforce API と統合できることを知っています。そのため、ヘルプデスクユーザーに注文状況データに安全にアクセスすることを許可する接続アプリケーションを作成することにします。
基本からはじめる
接続アプリケーションを作成する上で最初に実行するステップは、名前を付け、識別しやすいロゴを指定し、説明を入力することです。このような接続アプリケーションの基本を設定すると、ユーザーは必要なアプリケーションをすぐに見つけることができます。
- [Setup (設定)] から、[Quick Find (クイック検索)] ボックスに「App (アプリケーション)」と入力し、[App Manager (アプリケーションマネージャー)] を選択します。
-
[New Connected App (新規接続アプリケーション)] をクリックします。
- ページの [Basic Information (基本情報)] 領域で、接続アプリケーションを説明するために次の情報を指定します。
- 接続アプリケーションの名前に、「Customer Order Status (顧客注文状況)」と入力します。
- 接続アプリケーションの API 参照名 (プログラムでアプリケーションを参照する際に使用する一意の識別子) については、Tab キーを押すだけで入力されます。API 参照名のデフォルトは接続アプリケーションの名前であり、スペースがアンダースコアに置換されます。
- 連絡先メールに、「help.desk@mycompany.com」と入力します。Salesforce は、接続アプリケーションについて連絡する必要がある場合に、この連絡先情報を使用します。Salesforce がこの連絡先情報を共有することはありませんので、ご安心ください。
- ロゴ画像 URL については、[Choose one of our sample logos (いずれかのサンプルロゴを選択)] をクリックして、Salesforce のサンプルから [Case Transcript (ケースのトランスクリプト)] ロゴを選択します。[Case Transcript (ケースのトランスクリプト)] ロゴを選択したら、ロゴ URL と アイコン URL の両方をコピーして、それぞれの項目に貼り付けます。このロゴは、アプリケーションランチャーのタイルと、アプリケーションの認証時にユーザーに提示される同意ページの両方に表示されます。
- 接続アプリケーションの説明には、「Connected app to securely access customer order status (顧客注文状況に安全にアクセスするための接続アプリケーション)」と入力します。この説明は、アプリケーションランチャーのタイルと、アプリケーションの認証時にユーザーに提示される同意ページの両方に表示されます。
API インテグレーション用の OAuth 設定を有効にする
次は、接続アプリケーションの OAuth を設定します。次の設定で、接続アプリケーションと Salesforce API との統合方法を定義します。
- ページの API ([OAuth 設定の有効化]) 領域で、[OAuth 設定の有効化] を選択します。
- 接続アプリケーションのコールバック URL (認証が成功するとユーザーがリダイレクトされる場所) を次のように入力します: https://openidconnect.herokuapp.com/callback。この URL は、顧客注文状況アプリケーションが正常に認証されたときに、ヘルプデスクユーザーが移動する場所です。認証フローでは機密情報が送信されるため、コールバック URL には安全なホストを使用することが不可欠です。接続アプリケーションに使用されているコールバック URL は、OpenID Connect を使用して安全な Heroku サーバーでホストされています。そのため、データは安全です。OpenID Connectの詳細については、「Welcome to OpenID Connect (OpenID Connect へようこそ)」を参照してください。
- 接続アプリケーションに適用する OAuth 範囲を選択します。OAuth 範囲では、ユーザーがオフラインのときに接続アプリケーションがユーザーのデータを操作可能かどうかなど、接続アプリケーションの権限を定義できます。顧客注文状況アプリケーションを使用して、Salesforce REST API に保存されている注文状況データに Web 経由でアクセスする必要があるため、Web サーバーフローをサポートする次の範囲を適用します。
- Access unique user identifiers (openid) (一意のユーザー識別子にアクセス (openid)): この範囲では、アプリケーションで OpenID Connect アプリケーションのログインユーザーの一意の識別子にアクセスできるようになります。アクセストークンの他にも、OpenID Connect の仕様に従い、Web サーバーフローで openid 範囲を使用して、署名付き ID トークンを受け取ります。
- Manage user data via APIs (api) (API を使用してユーザーデータを管理 (api)): この範囲では、REST API や Bulk API などの API を使用して、現在ログインしているユーザーのアカウントにアクセスできます。この値には、Chatter REST API リソースへのアクセスも含まれます。
- Manage user data via Web browsers (web) (Web ブラウザーを使用してユーザーデータを管理 (web)): この範囲では、アプリケーションから Web 上でアクセストークンを使用できます。また、顧客が作成した Visualforce ページにアクセスできます。
-
[Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows (サポートされる認証フローに Proof Key for Code Exchange (PKCE) 拡張を要求)] をオフにします。
- アクセストークンと交換するアプリケーションのクライアントの秘密を要求するには、[Require Secret for the Web Server Flow (Web サーバーフローの秘密が必要)] を選択します。
- 更新トークンおよびハイブリッド更新トークンフローの認証要求でアプリケーションのクライアントの秘密を要求するには、[Require Secret for Refresh Token Flow (更新トークンフローの秘密が必要)] を選択します。このオプションを選択せずに、アプリケーションが認証要求でクライアントの秘密を送信すると、クライアントの秘密は引き続き検証されます。このオプションは、クライアントの秘密を保護できる Web サーバーベースのアプリケーションで選択できます。ただし、モバイルアプリケーションやユーザーのコンピューターにインストールするアプリケーションなど、クライアントの秘密を保護できないアプリケーションでは、このオプションを選択しないことをお勧めします。
保存して確認する
ID トークンにどの情報を含めるかを定義するなど、設定可能な項目は他にもありますが、顧客注文状況接続アプリケーションの場合は、このような特性を定義する必要はありません。その他の設定の詳細については、Salesforce ヘルプの「接続アプリケーションの作成」を参照してください。
あとは、新しい接続アプリケーションを保存して設定を確認し、ヘルプデスクユーザーがアプリランチャーからアクセスできるように、アプリメニューページに表示されるようにするだけです。
-
[Save (保存)] をクリックします。
-
[Continue (続行)] をクリックします。[Manage Connected Apps (接続アプリケーションを管理する)] ページが表示され、ここで新しい接続アプリケーションの設定を参照できます。
- 接続アプリケーションの設定が適切に定義されていることを確認します。次のようになります。
- コールバック URL をコピーして、テキストエディターに貼り付けます。次のステップで必要になるためです。
- コンシューマー鍵とコンシューマーの秘密も必要です。この 2 つにアクセスするには、[Manage Consumer Details (コンシューマーの詳細を管理)] をクリックして ID を検証します。コンシューマー鍵とコンシューマーの秘密をコピーして、テキストエディターに貼り付けます。
- [Setup (設定)] に戻り、[Quick Find (クイック検索)] とボックスに「App (アプリケーション)」と入力し、[App Menu (アプリケーションメニュー)] を選択します。
- [App Menu (アプリケーションメニュー)] の最後までスクロールして、[Customer Order Status (顧客注文状況)] 接続アプリケーションを表示します。また、ヘルプデスクユーザーがすばやくアクセスできるようにアプリケーションランチャーに表示されていることも確認できます。
これで、接続アプリケーションを作成できました。
先に進む
ここまで、接続アプリケーションの作成方法を説明してきましたが、次は実際に操作してみましょう。次のステップでは、OAuth 2.0 Web サーバーフローを実装する方法を紹介します。
リソース
-
Trailhead: 接続アプリケーションの基本
-
Salesforce ヘルプ: 接続アプリケーションの作成
-
Salesforce ヘルプ: OAuth トークンおよび範囲
-
Web サイト: Welcome to OpenID Connect (OpenID Connect へようこそ)