7

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

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

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

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

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

回答

4

单一登录在子域或二级域内相对容易实现。 ASP.NET窗体身份验证是一种基于票证的系统,票据以Cookie加密存储。你必须达到的是让你的网络应用程序共享一个这个cookie。

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

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

+0

我遵循你的指示。它不起作用。当我点击链接从app1.mydomain.com导航到app2.mydomain.com时,它会重定向到登录。 – uikrosoft 2015-11-16 10:12:00

+0

在我的本地,即使没有相同的密钥,它也可以很好地工作。 – uikrosoft 2015-11-16 10:12:53

1

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

相关问题