Sitecore インスタンス間でのユーザー パスワードの転送


解説

共有ユーザー アカウント ストレージを使用しない異なるSitecoreインスタンス間で、ユーザー アカウントを転送する必要がある場合があります。

これは、Sitecoreパッケージを使用するか、あるインスタンスでユーザー アカウントをシリアル化し、別のインスタンスで逆シリアル化することで実現できます。

ただし、これらのアクションを実行した後、転送されたすべてのユーザーのパスワードは、(Sitecore パッケージを使用する場合)ランダムな値または(シリアル化を使用する場合)デフォルト値の「b」に設定されます。

これは、Sitecoreがユーザー パスワードをハッシュ形式で保存する一方、データベースから標準のメンバーシップAPIを介して元の値を取得できないために発生します。そのため、Sitecoreパッケージを生成するとき、またはシリアル化を実行するときに、ユーザー パスワードを別のストレージに適切に移行できません。

したがって、再配置後にユーザー パスワードを手動でリセットする必要がある場合があります。このプロセスは、転送されるユーザーが多い場合は不便である可能性があり、ユーザー パスワードを変更しないでおく必要がある場合は受け入れられない可能性があります。

解決策

以下の手順を使用して、転送されたユーザー アカウントのパスワードを移行することができます:

  1. 要注意!データベースをバックアップしてください。
  2. TransferUserPasswords.aspx ファイルをソリューションの\sitecore\admin フォルダーにコピーします。
  3. 下記URLを使用してページをリクエストします:
    <hostname>/sitecore/admin/TransferUserPasswords.aspx
  4. 適切なテキスト ボックスを使用して、ソースおよびターゲットのコア データベースの接続文字列を入力します。
  5. Refresh ボタンをクリックして、両方のコア データベースに存在するユーザーのリストを取得します。
  6. 「<<<」および「>>>」ボタンを押下して、パスワードを転送するユーザーを選択または選択解除します。
  7. Transfer ボタンをクリックします。

上記の手順を実行した後、選択したユーザーのパスワードがターゲットのコア データベースに転送されます。

注:この解決策は、Sitecoreが使用するデフォルトのSQL メンバーシップ プロバイダーにのみ適用されます。