2

UI <->WCF<->ビジネスレイヤー<->データレイヤー<->データベースという古典的なアーキテクチャのアプリケーションがあります。WCFサービスには、ユーザー名/パスワード認証を使用します。これらのユーザー名は、アプリケーションデータベースに保存されているパスワードです。パスワードは定期的に期限切れになるように構成されています(ビジネス要件)。

パスワードの有効期限に問題があります。WCFサービスでユーザーパスワードの変更を担当する操作を行いましたが、認証に失敗したため、パスワードの有効期限が切れるとアクセスできません。

どのように処理すればよいですか?パスワードを変更するための特別な認証を備えた特別なエンドポイントを作成する必要がありますか(パスワードの有効期限が切れていても、パスワードが正しい場合はアクセスを許可するなど)?このような「小さな」問題に対する重い解決策のように思えます。

編集:多分私はもう少しコンテキストを追加する必要があります。検証は、UserNamePasswordValidatorを実装するクラスで行われます。検証方法では、ユーザーがロックされているかどうか、パスワードが正しくないかどうか、ログイン試行回数の最大数に達しているかどうか(そうであれば、ユーザーもロックします)、パスワードの有効期限が切れているかどうかを確認します。これらのいずれかが当てはまる場合、認証は失敗します。多分それは最高のデザインではありません...

4

3 に答える 3

1

アプリケーションでアクセス許可を処理する方法を指定しませんが、パスワードの有効期限が切れたユーザーはログインを許可する必要がありますが、パスワードを変更するアクセス許可のみを取得する必要があります。同様の状況で私たちが行ったことは、UsernamePasswordValidator を介してユーザーを許可することですが、AuthorizationPolicy では権限を付与しません。すべての関数が特定の権限をチェックするため、ユーザーはパスワードを変更する以外は何もできません。

于 2012-02-27T20:50:10.087 に答える
1

パスワードの有効期限は、認証ではなく承認の問題です。パスワードの有効期限が切れている場合は、通常どおりユーザーを認証する必要がありますが、ユーザーがパスワードを変更できるようにするものを除くすべての承認チェックを一時的に失敗させる必要があります。

注意: 認証チェックが行われる時点では、古いパスワードはまだ有効であり、ユーザーはまだ認証されているため、認証方法でコードを変更する必要はありません。

于 2012-02-27T20:57:39.687 に答える
1

パスワードが検証されるたびに、最初にパスワードの有効期限を確認します。パスワードの有効期限が true の場合、パスワードの有効期限が切れていることを示す特定のエラー コード/エラー メッセージを含む例外をクライアントに送信します。クライアント側で、このようなエラー コードのサービス応答を確認し、ユーザーをパスワード変更ページにリダイレクトします。

于 2011-04-20T11:49:47.290 に答える