2011-03-23 75 views
0

我已經實現了一個自定義ASP.net成員資格提供程序來處理表單身份驗證。自定義提供程序使用自定義用戶對象進行身份驗證和授權。我想知道如果我可以將此對象傳遞給每個WCF調用而不將其添加到參數列表中?將自定義用戶對象傳遞給WCF

回答

1

既然你已經在使用的MembershipProvider可以utalize上WCF以及因此兩個由同一機構固定。

請在msdn上查看post

Windows通訊基礎(WCF) 開發人員可以利用這些功能 出於安全目的。當 集成到WCF應用程序,用戶 必須提供用戶名/密碼 組合WCF客戶端應用程序 。將數據傳輸到 WCF服務,使用綁定 支持用戶名/密碼 憑證,如WsHttpBinding的 (在配置中,所述的wsHttpBinding 元),並設置所述客戶端憑證 類型用戶名。在服務,WCF 安全認證基於 上的用戶名和密碼,並 還分配由 ASP.NET角色指定的角色。

另一種選擇是創建一個自定義IAuthorizationPolicy是通過

OperationContext.Current.IncomingMessageHeaders.GetHeader<T> 

拉了你的用戶而不是設置您的主要如下所示:

evaluationContext.Properties[Constants.EvaluationContextPrincipal] = principal; 

下面是一些更多的信息創建自定義IAuthroizationPolicy。使用這種方法,您可以在不將用戶傳遞給方法的情況下實現自己想要的功能。

只是被警告如果你走這條路,一個狡猾的人可能最終冒充用戶,只需在你的頭部提供一個假用戶。

對於wcf使用asp.net成員資格提供程序很可能會讓您真正瞭解您以後再加上一些安全性。

+0

感謝馬克的回覆。我已閱讀MSDN文章,並在WCF應用程序中使用我的成員資格提供程序。我可以訪問所有Membership類的方法,如Membership.CreateUser()。但是,我可以檢索登錄的用戶。我是否需要任何特定語法來執行此操作? – 2011-03-25 12:45:38

+0

@Nima M,自從我使用這個以來,已經有一段時間了,我相信*在用戶通過wcf服務進行身份驗證之後,您應該可以通過ServiceSecurityContext獲取當前用戶。 – 2011-03-25 12:56:54

+0

我已經試過,它是空:( – 2011-03-25 14:08:47

0

您絕對不應該將此參數添加到每個方法的參數中。

我不知道您的自定義用戶對象,但至於WS *和最安全的標準而言,用戶對象將用戶名和密碼。

答案取決於您使用的綁定。 BasicHttpBindingBasicHttpContextBinding可以使用HTTP身份驗證方案,而WsHttpBinding可以使用自定義消息安全性,您可以提供用戶名和密碼。

BasicHttpContextBinding是特別好,因爲它可以與ASP NET會議的工作。

相關問題