2014-01-10 42 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; 

我再打電話AuthenticationManager.Register(MyAuthModule);

當WebRequest的具有UseIntegrated.UseDefaultCredentials = true或請求加入到WebRequest.Credentials然後我的身份驗證模塊稱爲憑據一切正常。但是,如果WebRequest沒有證書並且沒有使用默認憑證,那麼我的授權模塊不會被調用,並且請求失敗。

如何確保在收到質詢時調用身份驗證模塊,但WebRequest沒有憑據且不使用默認憑據?

+0

看起來像這樣的行爲是設計,我們可以通過添加虛擬證書或設置useDefaultCredentials爲真,但真正感興趣的解決方案,而不是解決方案 – Remko

回答

1

看起來請求以匿名方式進入。 您可以通過處理匿名請求來驗證是否屬於這種情況,因爲它解釋了 here

如果它是作爲匿名請求進入的,則可以嘗試在Web服務器上禁用它,因爲這會強制所有請求發送身份驗證標頭。

+0

不幸的是,我不能控制網絡服務器 – Remko