2014-03-06

JanrainとSalesforce連携してみる

前回説明したJanrain。

これ、SalesforceとSSOできちゃうみたいです。

 

ということで今回はSalesforceとソーシャルサインオン連携してみる回です。

 

認証プロバイダ作るあたりはgoogle, facebook, salesforceでSSOしたときと同じなので

こちらも合わせてご参考ください!

 

1. Janrainアプリのホワイトリストにsalesforceのドメインを追加

helpにはsalesforce.comを追加って書いてありますが

これじゃダメで、login.salesforce.com(あるいは*.salesforce.com)とSitesのドメインを指定してあげます。

JanrainWhiteListExample

 

ホワイトリストの設定が間違っているとこんな感じのエラーが出ます。

login.salesforce.comが設定されていない場合↓

JanrainWhiteListError1

 

Sitesのドメインが設定されていない場合↓

JanrainWhiteListError2

 

 

何気にここが一番のハマりどころでした…。

 

2. 認証プロバイダの登録

セキュリティのコントロール>認証プロバイダから新規に認証プロバイダを作成する。

プロバイダタイプをJanrainにして、コンシューマの秘密にJanrainのappKeyを設定。

 

で、こんな感じになる↓

JanrainIdentityProvider

 

他の認証プロバイダと違ってflowtype=xxxというパラメータが付与されています。

 

3. Sitesにログインページ(VF)を作成

こんな感じ↓

<apex:page showHeader="false" 
 standardStyleSheets="false"
 docType="html-5.0">
<html lang="ja">
<head>
<meta charset="utf-8"/>
<script type="text/javascript">
(function() {
    if (typeof window.janrain !== 'object') window.janrain = {};
    if (typeof window.janrain.settings !== 'object') window.janrain.settings = {};

    janrain.settings.tokenUrl = 'https://login.salesforce.com/services/authcallback/00Dxxxxxxxxxxxx/Janrain?flowtype={!$CurrentPage.parameters.type}';

    function isReady() { janrain.ready = true; };
    if (document.addEventListener) {
      document.addEventListener("DOMContentLoaded", isReady, false);
    } else {
      window.attachEvent('onload', isReady);
    }

    var e = document.createElement('script');
    e.type = 'text/javascript';
    e.id = 'janrainAuthWidget';

    if (document.location.protocol === 'https:') {
      e.src = 'https://rpxnow.com/js/lib/tzm-freedom/engage.js';
    } else {
      e.src = 'http://widget-cdn.rpxnow.com/js/lib/tzm-freedom/engage.js';
    }

    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(e, s);
})();
</script>
</head>
<body>
    <a class="janrainEngage" href="#">Sign-In</a>
</body>
</html>
</apex:page>

 

flowtype={!$CurrentPage.parameters.type}と、flowtypeパラメータを動的にしたので

https://hoge.force.com/Janrain?type=link でユーザ紐付け

https://hoge.force.com/Janrain?type=sso でSSO連携

をするようにしてます。

 

あとはこのVFをSitesに公開してSignInリンクを押してソーシャルサインオンできちゃう感じです。

 

Janrainは色んなWebサービスに対する認証連携のハブとなるサービスなので

OpenID Connect対応サービス, facebook, salesforce以外を認証プロバイダにしたい場合は

利用価値がありそうです。

 

ただし、無料のbasicプランだとユーザの登録上限が年間2500ユーザらしいのでその点は注意。

とは言え、Salesforce環境で2500ユーザを越えるところって滅多に見ない気がするけど…。

このエントリーをはてなブックマークに追加