前回説明したJanrain。
これ、SalesforceとSSOできちゃうみたいです。
ということで今回はSalesforceとソーシャルサインオン連携してみる回です。
認証プロバイダ作るあたりはgoogle, facebook, salesforceでSSOしたときと同じなので
こちらも合わせてご参考ください!
1. Janrainアプリのホワイトリストにsalesforceのドメインを追加
helpにはsalesforce.comを追加って書いてありますがこれじゃダメで、login.salesforce.com(あるいは*.salesforce.com)とSitesのドメインを指定してあげます。
ホワイトリストの設定が間違っているとこんな感じのエラーが出ます。
login.salesforce.comが設定されていない場合↓
Sitesのドメインが設定されていない場合↓
何気にここが一番のハマりどころでした…。
2. 認証プロバイダの登録
セキュリティのコントロール>認証プロバイダから新規に認証プロバイダを作成する。プロバイダタイプをJanrainにして、コンシューマの秘密にJanrainのappKeyを設定。
で、こんな感じになる↓
他の認証プロバイダと違って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ユーザを越えるところって滅多に見ない気がするけど…。