0

ログインには ASP.NET MVC と AdMembership プロバイダーを使用していますが、さまざまな理由から、独自の「次回ログイン時にパスワードを変更する」機能を実装する必要がありました。

また、24 時間に 1 回以上の変更を許可しないという NIST 要件もあります。したがって、ADではそのように設定されています。

必要なのは、パスワードをデフォルトにリセットする際の 1 つの要件を無視することです。24 時間前であっても、次回のログオン時にパスワードの変更を学生に強制する必要があります。

これが私の突き刺しです。基本的に、パスワードをリセットしてから 24 時間以上前の値に PwdLastSet プロパティを変更したいと考えています。

    if ( bSetToDefault )
    {
        var adDate                  = userToActOn.ADEntry.Properties[ "PwdLastSet" ][ 0 ];
        DateTime passwordLastSet    = DateTime.FromFileTime( ( Int64 ) adDate );
        passwordLastSet             = System.DateTime.Now.AddHours( -25 );
        long filetime               = passwordLastSet.ToFileTimeUtc();
        userToActOn.ADEntry.Properties[ "PwdLastSet" ][ 0 ] = filetime;
    }

しかし、ユーザーのパスワードが変更されていることを知っていても、null が返され続けます。

ヒントや提案はありますか?私は間違った物件を探していますか?

4

2 に答える 2

1

うーん、この属性は複製されるので、常に利用可能である必要があります。コマンドラインスクリプトを試して、表示されるかどうかを確認してください。

http://www.rlmueller.net/PwdLastChanged.htm

64ビットの日付で変換を行わないため、可能ですか?ただし、スクリプトを試して、機能するかどうかを確認してください。含まれている場合は、日付変換のためにその中のInteger8Dateプロシージャを調べてください。

于 2011-04-28T17:23:32.853 に答える
1

System.DirectoryServices.AccountManagement を使用する場合、ユーザー プリンシパルがパスワードをすぐに期限切れにする公開メソッドがあります。そのためoUserPrincipal.ExpirePasswordNow(); 、使用方法の詳細については、この記事を参照してください。

于 2011-04-28T20:57:06.257 に答える