WCF,sql组合中的活动目录身份验证|授权和用户配置文件

时间:2011-11-26 20:06:58

标签: c# .net asp.net-mvc wcf active-directory

我正在开发一个WCF服务,它将托管应用程序的业务逻辑。该应用程序主要用于Intranet,但可以从Internet访问。我们已启动并运行活动目录域,因此我计划根据用户的用户名和组对用户进行身份验证和授权。此服务主要用于ASP.NET MVC站点

那么,第一个问题是如何根据用户的AD配置文件对用户进行身份验证和授权?

其次,我需要存储有关每个用户的其他信息。问题是我无法修改AD方案。添加的字段数约为10左右。

我可以以某种方式使用SQL服务器进行配置文件存储吗?我当然可以,但如何将其与AD auth联系起来?

2 个答案:

答案 0 :(得分:1)

您可以使用WIF。

您可以按常规方式为WIF配置WCF服务,然后使用从基础ClaimsAuthenticationManager派生并覆盖其ClaimsAuthenticationManager方法的自定义Authenticate类。这是WIF的正常扩展点。 WIF会 从传入请求中获取安全令牌,并为每个相关AD属性添加声明。在重写Authenticate方法时,您将添加新的声明以表示您的额外属性。

此处描述了WIF对WCF服务的基本用法:

http://msdn.microsoft.com/en-us/library/ee748476.aspx

要了解如何使用ClaimsAuthenticationManager,请从此处开始:

http://msdn.microsoft.com/en-us/library/ee748211.aspx

答案 1 :(得分:0)

嗯,我认为你有几个选择,但你必须仔细考虑实施。

使用Active Directory身份验证的主要问题是,默认情况下,用户的凭据只能在两台计算机之间成功传递。对于Web应用程序,这意味着用户的凭据可以在最终用户的计算机和Web服务器之间传输,但不能再进行。

但是,可以通过使用Kerberos身份验证来更改此行为,这实际上允许身份验证票证在链中的所有受信任计算机之间传递(即从Web服务器传递到应用程序服务器到数据库,例)。成功配置Kerberos可能极具挑战性,特别是如果您之前没有使用它。

我认为您最好的办法是将您的网站配置为仅接受Windows身份验证。这意味着IIS将针对活动目录执行用户验证。在ASP.Net应用程序中,您可以从Request.ServerVariables(“logon_user”)中获取授权用户的域名。

此时,您可以使用FormsAuthentication登录用户,例如,无需再次登录。

然后,您可以实现SQL Server成员资格提供程序,也可以创建自己的数据库接口,以进行进一步的用户验证和额外的信息存储。我们使用了这两种机制,但由于它提供了额外的控制,我更喜欢自建的机制,在这种情况下,您不需要会员提供商提供的许多功能(密码重置,恢复等)

相关问题