我开发了一个MVC应用程序,它使用ASP.NET成员资格提供程序构建在表单身份验证上。
同一服务器还包含一个WCF应用程序,它指向与MVC应用程序相同的数据库(包括所有aspnet表)。
我想检查用户在服务中属于哪些组。
如何将凭据从MVC应用程序传递到WCF应用程序?
答案 0 :(得分:1)
嗯,你可以
在MVC应用程序上开发任何类型的API,以便WCF应用程序与之交互(并且这将允许您在将来的任何地方部署这两项内容),
尝试让WCF服务使用成员资格提供程序进行身份验证,并将成员资格提供程序指向同一数据库的wcf端。
检查出来
[说到成员资格提供者] Windows Communication Foundation(WCF)开发人员可以利用这些功能来实现安全性。当集成到WCF应用程序中时,用户必须向WCF客户端应用程序提供用户名/密码组合。要将数据传输到WCF服务,请使用支持用户名/密码凭据的绑定,例如WSHttpBinding(在配置中,wsHttpBinding元素),并将客户端凭据类型设置为UserName。在服务上,WCF安全性根据用户名和密码对用户进行身份验证,并分配ASP.NET角色指定的角色。
That's the article containing configuration samples
希望我理解你的需求。
答案 1 :(得分:0)
由于您使用的是Membership Provider
,因此您可以通过Identity
检查正在运行正在WCF应用程序中访问资源的线程的System.Threading.Thread.CurrentPrincipal.Identity
(经过身份验证的用户)。
示例:
在您的WCF应用程序中,您可以使用一种方法来发现经过身份验证的用户,然后从那里查询您的数据库以获取该用户所属的组:
static List<UserGroup> GetUserGroups()
{
// Get the authenticated username
string username = System.Threading.Thread.CurrentPrincipal.Identity.Name;
// Get the user's groups from your data store and pack them up in a list
...
etc
}