私はLogonUserを使用して、ユーザーのドメイン資格情報のセットを検証しています。LogonUserでキャッシュされた資格情報を使用しない方法
LogonType Current Password Old password
=========== ============================== ========================
Network Succeeds Succeeds
Batch Fails (0x00000569) Fails (invalid password)
Interactive Succeeds Fails (invalid password)
失敗コード:
0x00000569
:ログオン失敗:ユーザーはこのコンピュータで要求された種類のログオンを実行していない- 不穏な結果と
LogonUser(accountName, domain, password, LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_WINNT50, ref token);
0x0000052E
:ログオン失敗:Unk nownユーザー名やパスワード
詳細:
- ユーザーは機能が
true
を返し有効資格情報を入力した場合。 (良い) ユーザーが無効資格情報を入力した場合の機能は
false
を返します。 (良い)ユーザーが自分のパスワードを変更し、機能が
true
返す彼らの新しい有効資格情報を入力した場合。 (良い)ユーザーが無効資格情報を入力した場合の機能は
false
を返します。 (良い)ユーザーが自分の古い資格情報を入力した場合の機能は
true
を返します。 (悪い)
注:ユーザーが別のマシン(彼らは前にログオンしたことがありません1)に移動し、古い資格情報を入力し、
LogonUser
はし続けた場合trueを返します。つまり、キャッシュはローカルマシンでは発生していませんが、何らかの形で "ネットワークにある" "です。
- ユーザーが自分のパスワードを再度を変更し、その新しい新しい資格情報を入力した場合、この関数は
true
を返します。(良い) - ユーザーが自分の古い資格情報を入力した場合の機能は
true
を返します。 (悪い) - ユーザーが自分の古い古い資格情報を入力する場合、関数は
false
を返します。 (良い)
どのように、呼び出しLogonUser
が、私はそれがキャッシュされた資格情報を使用しないようにドメインを指示する指示することができたとき。
注:ユーザーが自分の古い(または旧古い)パスワードを使用してWindowsにログオンしようとすると、彼らは、無効なパスワードエラーを取得します。このログオンの種類は、平文パスワードを認証するために、高性能サーバを対象として
LOGON32_LOGON_NETWORK
:MSDNから
。 LogonUser関数は、このログオンタイプに対して資格情報をキャッシュしません。
LOGON32_LOGON_INTERACTIVE
このログオンの種類は、対話的にそのようなterminalサーバ、リモートシェル、または同様のプロセスによってログオンされているユーザとして、コンピュータを使用するユーザのために意図されています。このログオンタイプには、切断された操作のログオン情報をキャッシングするの追加費用があります。;したがって、一部のクライアント/サーバーアプリケーション(メールサーバーなど)には不適切です。です。
LOGON32_LOGON_BATCH
このログオンタイプは、プロセスが直接の介入なしにユーザーに代わって実行されるバッチサーバーを対象としています。このタイプは、メールやWebサーバーなど、一度に多くの平文認証の試行を処理する高性能サーバー向けです。
私はは、プレーンテキストのパスワードを認証し、そうLOGON32_LOGON_NETWORK
を使用しています。 対話型ログオンキャッシュの資格情報はここでは許可されていません。 バッチは、使用するべき時期については文書化されていませんが、単に失敗します。
更新:ドメインのみを許可:
- 以前のパスワード(ない、さらにバック任意の)
- はわずか60分
のためにそれはそれはだと私には無地です1時間の猶予期間を与えているActive Directoryの「機能」
私は猶予期間は望んでいませんが、私はドメインの設定を変更したくありません。(ドメインの設定がわからないので、1時間の猶予期間がありますあなたの古いパスワード)。
i * am * 'LOGON32_PROVIDER_WINNT50'を使用しています - 私は* deprated NTLMを使用したくありません。だから質問に暗黙のうちに、 "どのようにNTLM認証ではなくKerberosを使用できますか?"しかし、「なぜLogonUserはKerberosではなくNTLMを使用しているのですか?」*という質問は、StackOverflowも[ServerFaultも答えることができないようです](http://serverfault.com/questions/384719/how-toドメインは、ドメインに参加しています)。 –