将ASP.NET成员身份凭证从MVC应用程序传递到WCF应用程序

时间:2012-03-01 21:05:58

标签: .net asp.net-mvc wcf wcf-security

我开发了一个MVC应用程序,它使用ASP.NET成员资格提供程序构建在表单身份验证上。

同一服务器还包含一个WCF应用程序,它指向与MVC应用程序相同的数据库(包括所有aspnet表)。

我想检查用户在服务中属于哪些组。

如何将凭据从MVC应用程序传递到WCF应用程序?

2 个答案:

答案 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

}