0

我正在使用WCF服務,它有兩個端點WsHttpBinding和NetTcpBinding,並且該服務正在使用窗體身份驗證。服務託管在IIS 7上。WCF服務中的NetTcpBinding上的表單身份驗證

這與WsHttpBinding完美結合,但NetTcpBinding失敗。

它失敗下面的語句:

FormsAuthentication.SetAuthCookie("COOKIENAME", false); 

,異常是:

Object reference not set to an instance of an object. 

請分享這個你的想法。

回答

0

表單身份驗證需要cookie /會話,協議本身不支持。 因此,Forms身份驗證無法在WCF服務的NetTcpBinding上實現。

0

選項1:

As an Alternative:

  • 添加引用System.IdentityModel & System.IdentityModel.Selectors還有WCF組件。
  • 設置您的結合
  • Message.ClientCredentialTypeMessageCredentialType.UserName
  • 創建一個從UserNamePasswordValidator派生的類型和實施的唯一方法安全模式的消息。如果用戶名/密碼對未驗證,則應該拋出SecurityTokenException。

您的服務主機實例的憑據屬性,設置:

  • UserNameAuthentication.UserNamePasswordValidationModeUserNamePasswordValidationMode.Custom
  • UserNameAuthentication.CustomUserNamePasswordValidatorUserNamePasswordValidator派生類的新實例。
  • 設置服務證書與ServiceCertificate.SetCertificate()

至於客戶端證書對話框,你可以自己做一個和你的代理服務器設置proxy.ClientCredentials.UserName.UserName & proxy.ClientCredentials.UserName.Password打開代理/使用它的第一次之前。或者你可以看看你如何實現System.ServiceModel.Dispatcher.IInteractiveChannelInitializer來創建你自己的交互式初始化UI。

選項2:

Another Alternative這聽起來更像是你想做的事..什麼Passing FormsAuthentication cookie to a WCF service

爲什麼我提供一個答案,舊的文章 - 因爲有人可能會尋找一個答案。希望這可以幫助。