SalesforceでSSO(認証プロバイダ:Twitter編)

はじめに

Salesforceが提供するSSO(Single Sign-On)を使ったことありますか?

今回は、認証プロバイダにWinter'15から追加サポートされたTwitterとの認証を実際に試してみたいと思います。Twitterによる認証は主にコミュニティへのログインで使われることが多いと思いますので、コミュニティでログインできるところまでを紹介します。

設定の流れ

認証プロバイダを設定する上での大まかな流れです。

1.Twitterアプリケーションの設定

2.Salesforce組織で認証プロバイダを設定

3.登録ハンドラ(RegistrationHandler:Apexコード)を編集

4.Twitterアプリケーションを更新(Callback URLの設定)

5.シングルサインオン接続をテスト 6.コミュニティのログインページにTwitterアイコンを追加

1.Twitterアプリケーションの設定

1.1. https://apps.twitter.com/ から Create New App でアプリケーションを登録します

01.Twitter Create app

1.2. 登録したアプリケーションの Consumer Key(API Key)、Consumer Secret(API Secret)を控えておきます

02.API Key、Secret

2.Salesforce組織で認証プロバイダを設定

2.1 設定 > セキュリティのコントロール > 認証プロバイダ の画面を開き、新規作成します

2.2 プロバイダタイプに Twitter を選択、その他の情報を入力し保存します。

03.認証プロバイダの編集

2.3 保存後の設定情報は以下のようになります。

04.認証プロバイダの設定保存後

3.登録ハンドラ(RegistrationHandler:Apexコード)を編集

3.1 自動生成された登録ハンドラをテストを行う環境に応じて一部修正します

自動生成されたコードを見ると以下で構成されていることがわかります。

・canCreateUser: ユーザを作成するかの判定メソッド

・createUser: ユーザを作成するためのメソッド

・updateUser: ユーザを更新するためのメソッド

なお、サンプルコードは、著者Dev環境でエラー無く動くように限定的に修正したものです。

4.Twitterアプリケーションを更新(Callback URLの設定)

4.1 認証プロバイダのCallback URLをTwitterアプリに登録します 05.Twitter Callback URL

5.シングルサインオンのテスト

5.1 認証プロバイダのテスト初期化URLを開きます。図のようにTwitterの認証画面が表示されます。 07.Twitterで連携アプリを認証 5.2 認証プロバイダのシングルサインオン初期化URLを開きます ※コミュニティにログインする場合、URLに対してcommunityパラメータを付加して開きます https://login.salesforce.com/services/auth/sso/orgID/URLsuffix?community=https://jima-dev.na7.force.com/testcommunity orgID:組織ID URLsuffix:認証プロバイダを設定した時のSuffix communityパラメータ:ログインするコミュニティのURL

6.コミュニティのログインページにTwitterによるログインアイコンを追加

6.1 設定を行うコミュニティの管理設定を開きます

6.2 ログイン&登録を選択します

6.3 認証プロバイダに設定した名前にチェックします 08.コミュニティのログイン設定

6.4 コミュニティのログインページを開きます。 09.コミュニティのログイン画面

6.5 Twitterのアイコンが追加され、そこから認証を行いコミュニティが開くことを確認します。10.コミュニティのログイン後の画面

おわりに

SSOのニーズはよく聞くのでインターネットなどでSSOを調べてみたものの、何となく分かったような分からないような、正しく理解できているか不安に感じている方もいらっしゃることと思います。

今回の記事等を通じて、実際に動かして体感されることにより、きっと理解も深まることと思います。

過去記事になりますが、Salesforceだけを使ってOAuth2.0を実際に動かして試してみる記事も投稿しています。この記事では、Apexを使ってOAuth2.0の認証フローを理解することを目的としたわけですが、今回紹介するSalesforceの「認証プロバイダ」を使うことにより、開発者は認証フローの面倒な実装をしなくてもよくなります。 【参考】 SalesforceだけでSSO(OAuth2.0)を試す:事前準備編 SalesforceだけでSSO(OAuth2.0)を試す:実装編 ※TwitterがサポートするOAuthは1.0であり、参考で紹介した過去記事で行っている事とは少々異なりますが、何れにせよ面倒な実装をすることなく認証を行うことができる点を体感頂ければと思います。

今回の記事は「Salesforce1 Advent Calendar 2014」の16日目に参加しています!