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

本文关键字:用户 配置文件 组合 sql 授权 活动 认证 WCF | 更新日期: 2023-09-27 18:15:44

我正在开发一个WCF服务,它将承载应用程序的业务逻辑。该应用程序主要用于内部网,但也可以从internet访问。我们已经启动并运行了一个活动目录域,因此我计划根据用户名和他们所在的组对用户进行身份验证和授权。该服务将主要以ASP方式使用。. NET MVC站点

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

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

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

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

您可以使用WIF。

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

WCF服务中WIF的基本用法如下:

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

查看如何使用ClaimsAuthenticationManager,从这里开始:

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

嗯,我认为您有几个选择,但是您必须仔细考虑实现。

使用活动目录身份验证的主要问题是,默认情况下,用户的凭据只能在两台机器之间成功传递。在web应用程序的情况下,这意味着用户的凭据可以在最终用户的机器和web服务器之间传输,但不能再传输了。

然而,这种行为可以通过使用Kerberos身份验证来改变,Kerberos身份验证本质上允许身份验证票据在链中的所有受信任的机器之间传递(例如,从web服务器到应用服务器再到数据库)。成功配置Kerberos可能非常具有挑战性,特别是如果您以前没有使用过Kerberos的经验。

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

在这一点上,您可以使用FormsAuthentication登录用户,例如,不需要他们再次登录。

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