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

Rus*_*lan 7 .net authentication asp.net-mvc forms-authentication asp.net-membership

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

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

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

问题是 - 如何使用户的身份验证状态在所有不同的应用程序中可见(在不同的程序集中并单独运行)?

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

mur*_*tgu 5

在子域或第二级域内,单点登录相对容易实现。ASP.NET表单身份验证是一种基于票证的系统,其中,该票证以加密方式存储在Cookie中。您必须实现的是使您的Web应用程序共享此Cookie。

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

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