2009-06-01 15 views
0

ユーザーを認証するためにActiveDirectoryMembershipProviderを使用している.NET MVC(1.0)アプリケーションがありますが、これはそのまま動作します。認証に成功した後、私はそのユーザー(ADユーザー名、電子メールなど)のSQLでカスタムプロファイルを作成しています。ActiveDirectoryのユーザーがまだ有効かどうかを確認する必要があります

私は電子メールアラートをユーザーに送信していますが、上記のAD UserNameを保持するローカルSQLテーブルからユーザーをループしています。アラートを送信する前に、送信しているユーザーがADの有効な(つまりアクティブな)ユーザーであることを確認したいと思います。私のループの中で現在のユーザーのパスワードなしでこれをチェックする方法はありますか?

私はこのようなsoemthingを行うことを期待していた

...

MembershipUser adUser= Membership.GetUser(userName); //I have the username from the loop 
bool isValid = adUser.isValid; //I know this is not a real property 

私は「のisValid」と呼ばれるそのようなプロパティが存在しないことを知っている - しかし、誰もが私が使用すべきかプロパティを知っていますか? MembershipUserが役に立たない場合は、System.DirectoryServices.ActiveDirectory名前空間を呼び出すコードを記述する必要があると思いますか?もしそうなら、ユーザーが有効かどうかを調べるには、どのプロパティをADでチェックする必要がありますか?そして、「有効」とは、ユーザーが問題の会社でまだ働いており、AD経由でサインインできることを意味します。私はADのユーザーのグループメンバーシップには関心がありません。

おかげで、あなたは基本的にdisabledフラグのために、ユーザのuserAccountControlフラグをチェックする必要が

マイク

答えて

2

あなたが問題になっているユーザー(UserAccountの)のためのあなたのDirectoryEntryを持っていたら、このようにロックアウトされ無効とアカウントのアカウントを確認することができます:あなたは、ユーザーの属性を照会した場合/

// get the "userAccountControl" property 
int uac = Convert.ToInt32(userAccount.Properties["userAccountControl"][0]); 

const int ADS_UF_ACCOUNTDISABLE = 0x00000002; 
const int ADS_UF_LOCKOUT = 0x00000010; 

bool accountIsDisabled = (uac & ADS_UF_ACCOUNTDISABLE) == ADS_UF_ACCOUNTDISABLE; 
bool accountIsLockedOut = (uac & ADS_UF_LOCKOUT) == ADS_UF_LOCKOUT; 

マルク・

0

ADのプロパティの場合、userAccountControlプロパティは、アカウントがロックアウトされている場合は514、ログイン準備ができている場合は512になります。

私の応答を投稿するのに長い時間がかかりました。マーク氏のポストは実際より詳細で、アップします。

関連する問題