WCF REST服务的基于角色的身份验证

本文关键字:角色 身份验证 于角色 REST 服务 WCF | 更新日期: 2023-09-27 18:03:51

我正在尝试对REST WCF服务实现基于角色的身份验证。我读了很多关于这个主题的信息,但没有清楚地了解我该做什么。我知道如何使用[PrincipalPermission]属性限制对服务的访问,但不知道如何检查用户是否属于某个角色。因此,如果有人能指导我正确的方法,我会非常感激(例如,制定一个路线图,我应该做什么来实现这个目标)。

让我来描述一下这种情况。我有一个远程服务托管在服务器a和ASP。. Net MVC客户端托管在服务器B上。所有这些其余的服务都可以访问数据库,在那里我可以读取用户是否有权访问服务的信息。

WCF REST服务的基于角色的身份验证

好吧,龙舌兰酒,IMO你真正想要的,根据你的描述,是一个正常的,REST WCF服务与登录(ID作为字符串,PWD作为字符串)的方法,(也许)返回一个SessionID。然后,这个Login()或SessionID()检查方法将先于对所有其他方法的访问。由于它是webHTTPBinding——实际上是一个无状态的web服务——您需要在处理每个请求之前检查SessionID或ID/Password。

那么工作流应该是这样的:

1) client sends Login() request to host
2) host checks ID/Password against DB, creates SessionID in DB that times out after x hours, forcing new Login(). SessionID is returned in response to client,.
3) In all subsequent requests, client must provide that SessionID. That SessionID would be checked on the DB, returning stored information about the client (Role, name, ID, address ... whatever is useful) before the remainder of the request is processed. 
在请求到达您的工作代码之前,有一些方法可以对用户进行身份验证(例如使用表单或客户端证书的客户端身份验证(参见http://msdn.microsoft.com/en-us/library/ff405740.aspx))。这将把Login()/SessionID检查转移到在请求到达主程序之前执行的方法,但步骤基本相同。

由于在网络上以明文传递ID/Pwd是一个禁忌,你会想在你的web服务上实现SSL(见http://msdn.microsoft.com/en-us/library/ff650785.aspx)

我所描述的一切基本上都是平台独立的,所以如果你有iOS或Android客户端,我所描述的没有任何东西会阻止这些操作系统成功地与你的web服务交互。

好运。