ASP.NET身份验证 - 多个应用程序的一个登录系统

时间:2011-03-04 01:29:11

标签: .net asp.net-mvc authentication asp.net-membership forms-authentication

我们有一台服务器,可以说5-10个内部ASP.NET(MVC)应用程序在不同的应用程序池中作为单独的网站运行(在不同的端口和/或子域上)。我对内置的ASP.NET身份验证框架一无所知,所以我想知道是否有人可以在正确的方向上给我一个快速指针......

我希望通过一种登录机制保护所有内部应用程序(支持3-5种不同的角色;没有任何复杂)。此登录系统将是在服务器上运行的另一个应用程序/网站,并且为了获得对任何其他应用程序的访问权限,必须通过一个登录系统进行身份验证,并且目标应用程序必须能够看到用户的角色。内部应用程序将在代码级别进行修改,以插入此新登录系统(换句话说,我们将修改当前应用程序以支持身份验证)。

这一点的重点在于我不希望每个应用程序都有自己的登录/身份验证机制,而是使用更“全局”的身份验证系统(同一服务器上的所有内容)。我不是在寻找任何复杂的东西(只有15-25名员工的公司,3-5个部门 - 每个用户必须根据他们的登录信息与部门(角色)相关联)并且每个应用程序都将进行调整以向用户显示相应的数据基于他的角色)。

问题是 - 我如何制作它以便在所有不同的应用程序中(在不同的程序集中并单独运行)可以看到用户的身份验证状态?

我是否需要使用Forms身份验证?或者是Spring.NET中的东西?

2 个答案:

答案 0 :(得分:4)

单点登录在子域或二级域中相对容易实现。 ASP.NET Forms Authentication是一种基于票证的系统,其中票证以加密方式存储在cookie中。您必须实现的是使您的网络应用程序共享此cookie。

对于子域方案(例如mysite.com/app1,mysite.com/app2),只需在encryption/decryption文件的machinekey设置中将web.config键设置为相同即可。

对于二级域方案(例如app1.mysite.com,app2.mysite.com),除上述内容外,您还需要进行一些代码更改以强制所有身份验证Cookie使用相同的顶级域名(例如mysite.com)。

答案 1 :(得分:1)

如果您的公司在Windows上运行并且内部有Active Directory设置(Active Directory域服务),则可以将所有ASP.NET站点设置为使用集成Windows身份验证。这非常容易设置,并且对于Intranet站点非常常见。访问内部站点的用户将使用其Windows身份自动进行身份验证,这意味着无需使用用户名和用户名。密码登录表单。在此处阅读所有相关内容:http://www.asp.net/mvc/tutorials/authenticating-users-with-windows-authentication-cs