ユーザーがデータベースに保存されるレポートを作成する Web サイトで Windows 認証を使用しています。レポートを保存するときに、どのユーザーがレポートに記入したかを知りたいので、WindowsIdentity の SecurityIdentifier をデータベースに保存して、レポートに記入したユーザーを特定しています。現在の Windows ユーザーの SecurityIdentifier 値を取得するために使用するコードは次のとおりです。
public static string GetCurrentUserSID()
{
IPrincipal princ = HttpContext.Current.User;
WindowsIdentity winId = princ.Identity as WindowsIdentity;
SecurityIdentifier si = winId.User;
string securityIdentifierValue = winId.User.Value;
return securityIdentifierValue;
}
質問
ユーザー名やその他の値の代わりに SecurityIdentifier をデータベースに保存することで正しいことをしていますか? この種の状況で従うべきベストプラクティスは何ですか?
保存した SecurityIdentifier 値からユーザーのユーザー名を取得するにはどうすればよいですか?