2

.NET 4に、SSLとメッセージセキュリティで保護されたカスタムUserNamePasswordValidatorを使用したWCFサービスがあります。

UserNamePasswordValidatorは、ユーザー名とパスワードを受け取り、そのユーザー名とパスワードの有効なアカウントトークンを返すストアドプロシージャに渡します。

私の問題は、実際のWebサービスでそのアカウントトークンにアクセスする方法がわからないことです。トークンをヘッダーのどこかに追加できるはずですが、OperationContextがUserNamePasswordValidatorにまだ存在せず、HttpContextでの設定が失敗し、「メッセージのセキュリティの検証中にエラーが発生しました」と表示されます。

グーグルから、IAuthorizationPolicyまたはIIdentityのいずれかを実装する必要があるようですが、どちらもパスワードにアクセスできません。

多くのサービスがユーザー名とパスワードを取得し、それを使用して関連するアカウントを見つけると思います。私はそれを過度に複雑にしているのですか、それとも明らかな何かを見逃しているだけですか?

4

2 に答える 2

2

認証時に追加情報(つまり、トークン)を取得する場合は、カスタムUserNamePasswordValidatorだけでなく、カスタムUserNameSecurityTokenAuthenticatorを実装する必要があります。例については、 http://www.neovolve.com/2008/04/07/wcf-security-getting-the-password-of-the-user/を参照してください。

于 2013-03-20T13:19:27.720 に答える
1

最終的に、OperationContext.Current.ServiceSecurityContext.PrimaryIdentityをチェックして、ユーザーが認証されているかどうかを確認し、ID名に基づいてデータベースから必要な情報を取得しました。それはうまくいくようです。

于 2013-12-19T12:59:31.397 に答える