2014-01-10 2 views
11

RFC2617拡張機能を使用するWebサーバーと通信するコードを実装しています。 これを実現するために、IAuthenticationManagerモジュールを実装しました。カスタム認証モジュールは、クレデンシャルが存在する場合にのみ呼び出されます。

マイ認証モジュールをチェック受信したチャレンジはMYAUTH用の場合:

public Authorization Authenticate(String challenge, WebRequest request, ICredentials credentials) 
    { 

     if (!challenge.Contains(AuthenticationType)) // MyAuth 
     { 
      { 
       return null; 
      } 
     } 
     ... 
     // Get the token, omitted here 

     return authorization; 

WebRequestクラスはUseIntegrated.UseDefaultCredentials = trueを持っているか、要求が資格情報が私の認証モジュールが呼び出され、その後WebRequest.Credentialsに追加したとき、私はその後、AuthenticationManager.Register(MyAuthModule);

を呼び出しますすべてが機能します。ただし、WebRequestにクレデンシャルがなく、デフォルトのクレデンシャルを使用していない場合、認可モジュールは呼び出されず、リクエストは失敗します。

チャレンジを受信したのにWebRequestにクレデンシャルがなく、デフォルトのクレデンシャルを使用していないときに、自分の認証モジュールが呼び出されるようにするにはどうすればよいですか?

+0

この動作は仕様であり、ダミーの資格情報を追加するかuseDefaultCredentialsをtrueに設定することで回避できますが、回避策ではなくソリューションに本当に関心があります – Remko

答えて

1

リクエストが匿名として届いているようです。 匿名の要求を処理することにより、この場合であるかどうかを確認するには、 hereと説明されています。

匿名リクエストとして送信される場合は、すべてのリクエストで認証ヘッダーの送信が強制されるため、Webサーバーで無効にすることができます。

+0

残念ながら私はWebサーバー – Remko

関連する問題