我已经构建了一个使用Asp.Net成员资格提供程序的Asp.Net应用程序。
有一个客户端Web应用程序,它有自己的登录名。登录后,用户会获得一些链接。这些链接针对我开发的应用程序。目前,由于这些是两个域中托管的两个不同的应用程序,因此需要两次登录。
我想要实现的是拥有SSO,而不必在用户已登录客户端应用程序时登录。我已经通读了,似乎可以通过像ThinkTecture IdentityServer这样的STS提供商完成这项工作,并在我们的最终使用ADFS。
这是最好的方法吗?如果是的话,我找不到很多关于我需要从主应用程序团队要求启用SSO的更新的文档。
答案 0 :(得分:7)
对于STS Provider或ADFS,这可能是可能的。我建议只有一个Web应用程序用于身份验证,当用户点击主网站登录时,您可以重定向到身份验证应用程序,验证并创建令牌,然后重定向到主应用程序以及令牌。稍后,您可以调用任何应用程序以及此令牌,并检查用户是否有权访问此应用程序。令牌包含经过身份验证的用户,权限等信息。我想您需要创建自定义http模块来实现此功能。
如果所有应用程序都在一个域下,则可以通过cookie实现。
答案 1 :(得分:1)
我认为最简单的方法是使用Azure Active Directory来实现这一目标。这里有一些文章/相关信息:
http://www.dotnetcurry.com/windows-azure/1123/secure-aspnet-mvc-azure-using-active-directory-signon
http://azure.microsoft.com/en-us/documentation/videos/overview-of-single-sign-on/
答案 2 :(得分:0)
我认为最好的方法是在其他地方托管ADFS或ThinkTecture等身份提供商,然后使主应用程序和您的应用程序成为此身份提供商的依赖方。
需要更改这两个应用程序以支持WS-Federation协议(asp.net已经有一个支持它的HTTP模块)。
阅读此https://msdn.microsoft.com/en-gb/library/bb498017.aspx
然后还可以查看此博客http://chris.59north.com/post/Configuring-an-ASPNET-site-to-use-WS-Federation