« Visualforce Remote Objectsを使ったデータ更新 | メイン | Apex一括メール送信の制限 »

2014年6月 9日 (月)

OpenID Connectを使用したシングルサインオン

エンジニアの木下です。

今回はWinter'14でサポートされたOpenID Connectを使用したSSOを試してみましたので設定方法をまとめてみました。

1. [Google]OAuthクライアントの登録

まずはOAuthクライアントIDを作成します。

Google Developers Console から"APIs & Auth" > "Credentials Oath"と進み、"Create new Client ID"をクリックします。

101createoauthclient

ApplicationTypeは"Web application"を選択します。
AUTHORIZED JAVASCRIPT ORIGINS、AUTHORIZED REDIRECT URIは後ほど設定します。

02settingapplicationtype

Client IDを作成後、作成されたClient IDとClient Secretなどが表示されます。
これをSalesforceへ設定します。

103createdclientid

"APIs & Auth" > "Consent screen"にある"PRODUCT NAME"で最初のログイン時に表示される名前を設定します。

104consentscreensetting

2. [Salesforce]認証プロバイダの設定

Salesforceにログイン後、"設定" > "セキュリティのコントロール" > "認証プロバイダ"と進み、新規ボタンをクリックし以下を設定します。
プロバイダタイプ:Open ID Connect
コンシューマ鍵:1で作成したClient ID
コンシューマの秘密:1で作成したClient Secret
承認エンドポイント URL:https://accounts.google.com/o/oauth2/auth
トークンエンドポイント URL:https://accounts.google.com/o/oauth2/token
ユーザ情報エンドポイント URL:https://www.googleapis.com/oauth2/v3/userinfo

保存するとクライアント設定が表示されるので1で作成したOAuthクライアントを編集します。AUTHORIZED REDIRECT URIにコールバック URLを設定します。AUTHORIZED JAVASCRIPT ORIGINSは空で良いようです。

106createdauthprovider

3. [Salesforce]登録ハンドラの実装

登録ハンドラはAuth.RegistrationHandlerインターフェースを実装する必要があります。実装するメソッドはcreateUserとupdateUserの二つです。

createUserは初回ログイン時に、updateUserは二回目以降のログイン時に呼ばれるメソッドです。Auth.UserDataにはidentifier(GoogleのID)やemail(メールアドレス)などのプロパティがあるのでcreateUserではそれらの情報をもとにユーザを特定します。

updateUserではここでは特になにもしていませんが、Auth.UserData dataからユーザの情報を更新などできそうです。

public class GoogleHandler implements Auth.RegistrationHandler{
    public User createUser(Id portalId, Auth.UserData data){
        User u = [SELECT Id FROM User WHERE Username = :data.email];
        return u;
    }

    public void updateUser(Id userId, Id portalId, Auth.UserData data){
    }
}

4. [Salesforce]ログイン

最後にログインページの設定です。シングルサインオン初期化 URLからでもSSOできますが、今回はドメインを作成し、ログインページのSSOのボタンからログインしてみます。

"ドメイン" > "私のドメイン"からドメインを作成し、ログインページのブランド設定で認証サービスに2で設定した認証プロバイダ名「Google Login」を追加します。

20140609_63331

通常のログインボタンの下に「Google Login」が表示されました。このボタンからSSOでログインができます。

設定も簡単でログインの手間も省けて嬉しい限りです。

トラックバック

このページのトラックバックURL:
http://bb.lekumo.jp/t/trackback/493401/32287995

OpenID Connectを使用したシングルサインオンを参照しているブログ:

コメント

コメントを投稿

コメントは記事の投稿者が承認するまで表示されません。

採用情報

株式会社フレクトでは、事業拡大のため、
・Salesforce/Force.comのアプリケーション開発
・HerokuやAWSなどのクラウドプラットフォーム上
でのWebアプリケーション開発
エンジニア、マネージャーを募集中です。

未経験でも、これからクラウドをやってみたい方、
是非ご応募下さい。

フレクト採用ページへ

会社紹介

  • 株式会社フレクトは、
      ・認定コンサルタント
      ・認定上級デベロッパー
      ・認定デベロッパー
    が在籍している、セールスフォースパートナーです。
    また、heroku partnersにも登録されています。
    herokuパートナー
    株式会社フレクト
    Salesforce/Force.com
    導入支援サービス
    弊社の認定プロフェッショナルが支援致します。
    ・Visualforce/Apexによるアプリ開発
    ・Salesforceと連携するWebアプリ開発
    も承っております。
    セールスフォースご検討の際は、
    お気軽にお問合せください。

Twitter

リファレンス

■Developer's Guide(リファレンス)
・Apex  HTML | PDF | 日本語PDF | ガバナ制限
・Visualforce  HTML | PDF
・Web Services API  HTML | PDF | 日本語PDF
・Bulk API  HTML | PDF
・REST API  HTML | PDF | 日本語PDF
・Metadata API  HTML | PDF
・Migration Tool  HTML | PDF
・AJAX Toolkit  HTML | PDF
・Data Loader PDF | 日本語PDF

■早見表 (日本語)
数式
Apex
Visualforce
Web Services API
Chatter