Salesforce
SAML
SSO
openid_connect

シングルログアウトっていうのがあってだね

はじめに

この記事は、Salesforce Platform Advent Calendar 2017の20日目の記事です。

シングルログアウトがついに、Winter'18でGAになりました!!

Let Users Log Out of All Apps at Once with Single Logout (Generally Available)

シングルログアウトってなによ

主にエンタープライズIT向けのシングルサインオンで出てくる言葉です。 
シングルサインオンしたなら、ログアウトも1回の操作でやりたいよね。という一見簡単そうに見えて非常に奥の深い話です。

何も考えないと以下のようになります。

メイン側でログインして、サブ側へ移動しました。(SSOによりログイン処理はユーザーからは隠蔽)
サブ側でログアウトしたあと、またサブ側にアクセスするとログアウトできてない!(実際はログアウト→ログインをしている)

このアプリはログアウトできない、不具合だ! セキュリティの不具合か? 危険だ! となるわけです。

工夫で実現

メイン側のセッションを短くしておいて、サブ側で操作している間にメイン側のセッションは切れるためだいたいにおいてサブ側をログアウトすればログアウト状態になる。でも万能じゃないわけです。

プログラムで実装する

サブ側でのログアウト処理後にメイン側のログアウト処理にリダイレクトすることで実現できます。 が・・・

Salesforce にはログアウトボタンがありますので、これを使うわけですよねってログアウトするだけのためにログアウトボタンを自作しないといけないじゃないか・・・ となり非常にめんどくさかったわけです。

が、これで解決です。

痒い所に手が届く機能追加本当にありがたいことですね。

「えー、ただしこの機能がほしかったのは4年前であり非常に長いこと待ちましたがまたSSOを使うときに使おうと思います」