2014-03-31

force.comポータルでOAuth2.0

以前の記事でforce.comでREST APIを使用する際のドメイン名に関して取り上げたけど

ポータルへのOAuth認証(Sites利用)は

普通のSalesforceユーザへのOAuthの設定方法よりやや面倒な感じになる。

ということで、今回はポータル+Sites+OAuthについて書いてみる。

 

【ポータルOAuthの事前準備】

ポータルユーザに対してREST APIを利用したい場合は、対象ポータルに紐付けたSitesを設定する必要がある

※ポータルユーザに対してREST APIのOAuthリクエストをする際のドメインは、Sitesのドメインになる。

 

【ポータルOAuthの仕様・注意点】

  1. SitesドメインのOAuthエンドポイントに対してAuthorizationCodeをリクエストするときに

ポータルユーザのセッションIDが切れていた場合は401のエラーページに遷移するので

当ページでログイン処理を行う必要がある。

  1. 401のエラーページではSite.Loginメソッドを使ってセッションを発行し

return値(PageReference)をクライアントに返す必要がある。

  1. 2のreturn値によってfrontdoor.jspにリダイレクトされることで

セッションIDがCookieにセットされ、OAuthのリダイレクトURLに遷移する。

※2-3の詳細はこの記事を参照。

 

401のエラーページっていうのはSitesの設定の以下の部分。

SitesErrorPage

 

普通のSalesforceユーザに対するOAuth認証と異なるのは1-2の工程。

Sitesを使ってポータルユーザへのOAuthを行う場合には

401のエラーページのVF画面でSite.Loginメソッドを使って認証させる必要があります。

逆に、普通のSalesforceユーザではOAuthログイン画面の自由なカスタマイズが出来ないのに対して

ポータルユーザへのログインはフロントにSitesを利用しているため自由なカスタマイズが出来るということです。

 

また、注意しておかないといけない点としては

認証ページはVF画面(UnAuthorized)を使用できるので自由にカスタマイズできるが

認可の画面はカスタマイズできず、以下のような固定画面になること。

OAuthLoginPage

 

ポータル案件ではデザイン性が要求されるため

カスタマイズできない画面があるというのは、十分留意しておく必要があります。

 

コミュニティはここらへんどうなんだろう…?

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