私は非常に単純なWCF4を持っています.WcfRestContribを使用してカスタム基本認証を可能にする安心なWebサービスです。これは、クライアントが事前にユーザー名とパスワードを提供してもうまく動作しますが、そうでない場合は、クライアントに(401応答を通じて)クレデンシャルを提供するように挑戦するのではなく、400 Bad Requestレスポンスを返します。WebAuthenticationConfigurationを使用した場合の401チャレンジレスポンスの有効化
サービスでは、WcfRestContribを実装するための宣言的なアプローチを使用して、必要なクラスを属性で修飾しています。ここに私のServiceContractの宣言は次のとおりです。
一つだけの非常に簡単な操作がある// Standard attributes here
[WebAuthenticationConfiguration(typeof(WebBasicAuthenticationHandler),
typeof(SecurityValidator),
false,
"SearchService")
]
public class SearchService
:資格情報が渡されたときに、それが唯一の呼び出されるので、それはおそらく問題ではありませんが(ように見える
// Standard attributes here
[OperationAuthentication]
SearchResponse Fetch(SearchRequest request)
そして、私のUserNamePasswordValidator
を):私はWcfRestContribをデバッグしようとしWebBasicAuthenticationHandler
クラスがBasicAuthorizationException
を投げていることがわかる
public override void Validate(string userName, string password)
{
// TODO: Insert login validation logic here.
// To indicate login failure, throw a FaultException
// throw new FaultException("Unknown Username or Incorrect Password");
// Just return to indicate that the username and password are valid
return;
}
(これしかし、何らかの理由で何らかの理由で例外を401に変換していません。
WcfRestContrib github siteで読んだ内容に基づいて、an issue posted by its author (Mike O'Brian)が表示されます以外はの401を返します。現在401のチャレンジを返しているので、私はそれを読んでいます。
この機能がある場合、何が欠けているのですか、それとも何か間違っていますか?
UPDATE
WcfRestContribでこれを行う方法がない場合、(IISにおける標準的なWindowsベースの基本認証を使用して超えて)これを達成するための別の方法はありますか?私は任意の(他の)代替ソリューションに開放されています。