ユーザの lockouttime 属性の値の確認
DESCRIPTION
ユーザをロックアウトさせて lockoutTime 属性の値がどう変わるかを実験してみました。TRANSCRIPT
ユーザの LockoutTime 属性の値の確認
ユーザをロックアウトさせて実験
小山 三智男
mitchin
Microsoft MVP for Directory Services
実験
ドメインユーザには lockoutTime という属性があり、アカウントのロックアウトの状態によって値がどうなるか実験してみました。
ユーザが 3回ログオンに失敗すると 30分間はログオンできなくなるように設定しておきます。
Domain Admins グループに所属するテスト管理者ユーザでドメインコントローラにログオンします。
初期値、ロックアウト後、ロック解除後、ログオン成功後の値を確認します。
2
準備:ロックアウト ポリシーの設定 (1/3)
管理ツール「グループ ポリシーの管理」で Default Domain Policy を編集します。
3
準備:ロックアウト ポリシーの設定 (2/3)
「コンピュータの構成」-「ポリシー」-「Windows の設定」-「セキュリティの設定」-「アカウントロックアウトのポリシー」を選択します。
4
準備:ロックアウト ポリシーの設定 (3/3)
「アカウントのロックアウトのしきい値」のプロパティで「このポリシーの設定を定義する」にチェックを入れてロックアウトするまでの回数を入力します。
5
初期値
値がないので <未設定> と表示されています。
6
実験1. 3回ログオンに失敗
画面上でロックアウトされているのを確認。
7
実験1.の結果
ロックアウト日時がセットされる。但し値は大きい整数(ADSI の IADsLargeInteger)なので、プログラムで日付に変換しないと日時として判らない。
8
実験2. ロック解除後(30分後)
値は変わらないが、ユーザのプロパティ画面のアカウントタブにあるロック解除のチェックボックスのテキストは変わっているのでロックが解除されたのが判る。
左:ロックアウト中、右:ロック解除後
9
実験3. ロック解除後にログオン後
0 がセットされる。ログオンしなくてもアカウントタブで明示的にロックを解除した場合も同じ。
左:明示的にロック解除後、右:ログオン後
10
実験結果から言えること
lockoutTime 属性の値からは、ユーザが現在ロックアウトしているかどうかは判りません。
判るのはロックアウトしていないかかロックアウトした日時のどちらかです。
プログラムからは次のどちらかで確認できます。
ADSI の IADsUser.IsAccountLocked プロパティの値
※DirectoryEntry.NativeObject プロパティをキャスト
userAccountControl 属性の値と16の論理積が16か
※ADS_USER_FLAG 列挙体の ADS_UF_LOCKOUT の値が16
11
詳細や関連情報はブログ等で
Active Directoryデータの "大きい整数"http://www.slideshare.net/mitchin227/large-integerhttp://blogs.wankuma.com/mitchin/archive/2013/11/29/328258.aspxhttp://blogs.wankuma.com/mitchin/archive/2013/12/01/328262.aspx
lockoutTime属性の値の確認http://blogs.wankuma.com/mitchin/archive/2013/12/02/328265.aspx
Active Directoryデータのプロパティ出力のCOM対応版http://blogs.wankuma.com/mitchin/archive/2013/12/04/328271.aspxhttp://blogs.wankuma.com/mitchin/archive/2013/12/05/328273.aspx
COM対応版の変更点の説明(大きい整数関連)http://blogs.wankuma.com/mitchin/archive/2013/12/06/328275.aspx
ユーザがロックアウトしてるかどうかの判断http://blogs.wankuma.com/mitchin/archive/2013/12/11/328284.aspx
ドメインユーザのプロパティ画面の項目と属性の対応(アカウントタブ)http://blogs.wankuma.com/mitchin/archive/2013/07/23/328014.aspx
12