ASP.. NET MVC和WCF身份验证/授权与SQL server中的配置文件对Active Directory
本文关键字:server 配置文件 Directory Active SQL 授权与 MVC NET WCF 身份验证 ASP | 更新日期: 2023-09-27 18:17:06
我有一个内部网应用程序,它也可以由客户端从internet访问。我需要做的是提供用户访问它从互联网一个登录表单,以输入凭据和验证他们对AD。从内网访问此应用程序的用户应自动登录。
我知道我不能在ASP中混合两种身份验证类型。网络项目。所以我需要使用FormsAuthentication与ActiveDirectoryMembershipProvider来认证用户。但是个人资料呢?我需要根据用户组选择配置文件(即,如果它是一个管理器从管理器表加载配置文件,如果它是一个客户-从客户表)。
第二个问题是我需要使用经过身份验证的人员凭据来访问WCF服务。并根据他们的团队成员来决定他们能做什么/不能做什么。
是否使用FormsAuthentication正确的方式来做到这一点,或者我需要看看其他地方?
我使用EF代码优先方法来创建数据库。服务被实现为WCF服务。应用程序本身是一个ASP。。NET MVC站点。但在遥远的未来,我将需要WP7客户端。
我们有一组类似的需求,我们处理它的方式是自己实现身份验证和配置文件管理,一旦用户被认证,使用FormsAuthentication来保证站点安全。
对于提供了用户名和密码的场景(登录表单、wcf客户端),可以调用LogonUser方法。用户通过身份验证后,您可以在FormsAuthentication中使用他们的身份验证用户名。
用户应该自动登录的场景会稍微复杂一些,因为为了支持手动登录,您必须在主站点上提供匿名身份验证。
我们解决这个问题的方法是添加一个单独的web应用程序作为主应用程序的子目录,并将该子应用程序配置为只支持windows身份验证。当内部用户访问该门户时,我们从Request.ServerVariables("logon_user")获取他们的AD登录,使用有效期为5秒的令牌对其加密,然后响应。使用查询字符串中的加密网络登录将用户重定向到主应用程序。如果主应用程序在查询字符串中看到此参数,则对其进行解密,验证其是否在允许的时间范围内,然后使用此凭据使用FormsAuthentication登录用户(听起来可能很多,但描述实际上比代码占用更多空间)。