[Sitecore][Azure AD B2C] Azure AD B2C その他
パスワードのリセットポリシー
パスワードのリセットポリシーについては、特に問題がなかった。基本的にリセットの制御はAzure側で処理されています。これはユーザーに自分でパスワードをリセットさせています。もし、管理者としてはAzureにてパスワードのリセットができます。もし、コードで、リセットをする必要があれば、OWINもしくはGraph APIにてリセットすればいい。
カスタマイズ
それぞれ、UIカスタマイズ対応の画面のカスタマイズについて、
下記の記事にて詳細なステップが書かれています。
ページのユーザー インターフェイス (UI) カスタマイズ機能を試すために使用するヘルパー ツール
📝学んだ事:😵UIカスタマイズファイルをどこに置けばいいの?
上記の記事にてユーザー インターフェイス (UI)のカスタマイズのファイルをAzureBlobストレージにて保管と書かれていますが、これは別にどこにおいて構いません。唯一の要求はHTTPSでそのファイルへのアクセスが CORS に対応していればいい。日本語にてCORS制御に関する記事がたくさんあり、英語版はこちら.
ローカルでテストをする際に下記のエラーが表示されたことがありました。
これはHTTSを使用しているにもかからわず、有効なHTTPS証明書を使用していないからです。ブラウザでカスタマイズのページへ一度アクセスし、Chromeなら、下記の画面で一度カスタマイズのページをブラウザにてキャッシュすればいいです。
ログアウト
ログアウトは一番簡単だと思っていましたがサイトコアと統合でバーチャルユーザーとの同期をとらなければなりません。下記は私が学んだことです。
📝学んだ事:😵バーチャルユーザーのプロファイル情報更新されない。。。
QAから、違うユーザーを使った同じブラウザでテストをする際にユーザーの情報が更新されていないといわれました。ユーザーがログアウトをクリックしたら、まず、セッションをクリアします。
Session.Clear(); Session.Abandon(): Session.RemoveAll();
次に、バーチャルユーザーをサイトコアからログアウトします。
AuthenticationManager.Logout();
これで情報が更新されるはずだけど、もっとみれば、ユーザー情報がMongoDBより
読み取っているので、ユーザーをサイトコアそして、Azureからログアウトした際に
xDBからMongoDBにデータをフラッシュするのを忘れていました。そのため、
新しいログインしたユーザーの情報が表示されなかった。
サイトコア、Azureからログアウト処理にて、xDBからMongoDBにデータ
をフラッシュすればいい。
Sitecore.Analytics.Tracker.Current.EndTracking(); HttpContext.Current.Session.Abandon();
📝学んだ事:😵サイトコアのタイムアウトでバーチャルユーザーがサイトコアからログアウトされたけど、Azureからログアウトされていない。
一度サイトコアにログリンしたユーザーがもし、なにもせず、ブラウザを開いたままでセッションタイムアウトでログアウトされます。しかし、Azureからログアウトされていない。この際に再度ログインすると、Azureのログイン画面が表示せず、既存のAzureのコネクション使用されます。
対策として、サイトコアのsessionEndイベントまたはsessionEndパイプラインにてAzureからログアウトればいいです。
例えば、sessionEndパイプラインの場合、
\App_Config\Include\Sitecore.Analytics.Tracking.configにて パイブラインを追加し、
public class AzureAdB2cSessionEndLogOut { public void Process(SessionEndArgs args) { Assert.ArgumentNotNull(args, "args"); Log.Info("Azure AD B2C LogOut", this); } }
web.configにてタイムアウトを一分に設定して、テストすればいい。
<sessionState mode="InProc" cookieless="false" timeout="1"