如何在WCF服务中授权用户

时间:2014-01-02 14:00:14

标签: c# wcf

我有WCF服务,用户可以在其中添加简单消息。在将服务放入数据库之前,我需要授权用户,如下所示:

    [OperationContract]
    [WebGet(UriTemplate = "/GetMessages/{SessionToken}/{UserPassword}/{UserGLKNumber}")]
    Messages GetMessages(string SessionToken, string UserPassword, string UserGLKNumber);

很明显,这个解决方案并不好(发送url用户密码和号码)。那么,其他方法是什么?

重要的是 - 我有一个用Java / PHP / Obj-C(简单的小应用程序)编写的客户端 - 无论如何不在C#中。

2 个答案:

答案 0 :(得分:0)

编写登录方法并使用ASP.NET身份验证cookie(基于表单的身份验证),请参阅this。或者使用基本身份验证,让客户端通过http标准方式进行身份验证。

答案 1 :(得分:0)

您必须区分身份验证(谁是身份验证)和授权(他可以做什么)。对于第一个,您有多种选择,其中Windows(用户的登录凭据)或基本(用户名+密码)最简单。这只是服务方面的一种配置方式。

另一方面,可以对身份(用户是它)或角色(哪些角色适用于此用户)进行授权。后者是可能的"在代码"使用if / else结构,但也使用方法上的属性[PrincipalPermission(SecurityAction.Demand,Role =" Administrator")]。这表明你需要"访问该方法的用户具有"角色"管理员(你自己指定的东西)。

要为身份提供角色,您需要某种角色提供者,显然这不是用户可以提供的。因此,您可以使用ASP.NET RoleProvider或介于其间的安全令牌服务。

您可以在此处详细了解:http://msdn.microsoft.com/en-us/library/ff405740.aspx