.NET の認証ネタを 2 つ

1) IsInRole メソッド使うときの注意事項

ASP.NET のフォーム認証や Windows 認証を行うときがありますね。
その際、どのロールに属しているかを調べるために、IsInRole メソッド使うことが多いですが
非常に重要な注意事項があります。

MSDNより

新しいユーザーや新しいグループなど、新しく作成されたロール情報をテストする場合は、
ドメイン内でのロール情報の反映を強制するために、ログアウトとログインを行うことが重要です。
これを行わない場合、IsInRole テストを実行すると false が返されることがあります。

っていうか、必ず、ログアウト/ログインしないと、false が返って来ます。

2) .NET Framework 1.1 と 2.0 の AuthenticationType プロパティ

WindowsPrincipal クラスを使うと、ユーザープリンシパルを調べられますね。
では、実際に、WindowsIdentity クラスの AuthenticationType で使用する認証の種類を調べてみると…

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsPrincipal user = (WindowsPrincipal)System.Threading.Thread.CurrentPrincipal;
WindowsIdentity ident = (WindowsIdentity)user.Identity;
Console.WriteLine("User name: {0}", ident.Name);
Console.WriteLine("Authentication type: {0}", ident.AuthenticationType);

これを、.NET Framework 1.1 と 2.0 の環境でそれぞれ実行してみます。すると…

1.1 => NTLM
2.0 => Kerberos

注意しましょう。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。