2011-12-14 6 views
1

WinformsとEntity Framework 4.2(コードファースト)とSQLServer 2008 R2で構築されたプロジェクトがあります。SQL Serverに対するカスタムwinforms認証:パスワードの有効期限を処理する方法?

このプロジェクトでは、ユーザーはユーザー名/パスワード(ログイン画面から)を使用してSQL Serverに対して認証する必要があります。

"master"または "system"ユーザはなく、ユーザ名とパスワードを取得/比較するクエリはありません。プロセスはすでにSQL Serverへのログインを使用して行われています。 ユーザーは独自のSQLユーザーアカウントを持ち、アプリケーション内で処理する必要があります。

しかし、パスワードの有効期限が切れていて、暗闇に陥ってしまいました。 どうすれば対応できますか?具体的には、アカウントが既に期限切れになっているときに、これをどのように処理できますか?

すでに例外を処理していますが、ユーザーのパスワードをリモートから変更する方法はわかりません。

ユーザーAがBのパスワードを変更しているのではありません。有効期限が切れているため、自分のパスワードを変更しようとしています(SQL Server Management Studioにログインするようにユーザーに要求することはできません)。

答えて

0

あなたは、ユーザーが古いパスワードを入力させることを確認する必要がありますので、これは理論的には、すべてのユーザーが、彼らはALTERログイン権限を持って提供し、他のユーザーのパスワードを変更することを可能にすることに注意してください、しかしALTER LOGIN声明

を使用することができます(これは私がデフォルトと信じている)。

興味深いですが、どうしてWindows認証を利用しなかったのですか?そうすれば、ログインの有効期限とパスワードの処理はあなたには分かりません。

+0

ログインを変更するには、ログインして、ALTER LOGIN権限を持っている必要があります。 EntityFrameworkの使用パスワードが期限切れになっているため、このステートメントを実行する方法がないため、ログに記録できません。それは一つの問題です。もう1つは、ユーザーがALTER LOGIN権限を持つことができないことです。 私はこのシステムが必要です.3つのタイプの認証があります:システムのみ(「マスター」ユーザー)、この(sgbd)とWindows認証です。顧客は選択できる必要があります。 –

+1

ALTER LOGINは、alter loginの権限しか持たないsqlユーザーとして実行でき、有効期限はありません。ユーザーは引き続き自分のパスワードを知る必要があるため、追加のリスクにさらされるべきではありません。 – dash

+0

これはアプリケーションの設計を壊します(ユーザーはDBに対して認証する必要があります)。私はこのようにすることが可能であることを知っています(権限を減らしても何らかの "マスター"ユーザ)、それを行う唯一の方法かもしれませんが、私は何かを探しています。私は接続文字列(おそらく新旧のパスワードを送信する方法)またはSQLClientのAPIを助けることができると思った。 –

関連する問題