我有四个系统在同一台服务器上运行。我想让用户为所有系统登录一次。我制作了一个用户管理系统来创建用户并对其进行编辑。
我试图在会话中保存,但没有帮助。
有什么建议么?我正在研究 asp.net。
最好的方法是使用 Federated Security。如果您使用的是 Windows 身份验证,则可以使用 Active Directory 联合身份验证服务 (ADFS)。在此模型中,用户引用 Web 应用程序并检查当前线程上的主体。如果值为 null,则存储在 web.config 中的信息将自动将请求重定向到登录页面。这是假设没有 Windows 安全上下文,否则用户可以自动登录。
用户成功登录到环境后,将填充线程上的主体,并发出一组特定于该用户的声明。由于声明与主体相关联,而不是与特定应用程序相关联,因此任何声明感知应用程序都可以全面使用它们。
如果你不使用 Windows 身份验证,你仍然可以完成同样的事情,唯一的问题是你不能使用 ADFS。相反,您必须实现自己的身份提供程序来替换 ADFS。.NET Framework 确实提供了基类和接口来帮助您实现这一目标。
有两种方法。
大多数解决方案围绕在中心站点发生的登录,然后返回目标站点用来检索用户的身份信息字段(登录令牌)。
当您访问另一个站点时,该站点会很快将您重定向到中央站点,如果您已登录(持久 cookie),您将取回您的身份。
或者,您可以与推荐人一起做很多事情并玩弄。
你想在互联网上做一些研究 - 你看 kfo 是“单点登录”。
http://www.codeproject.com/Articles/27576/Single-Sign-on-in-ASP-NET-and-Other-Platforms
有一些技术讨论。
您可以阅读完整的独立网站(域)
http://aspalliance.com/1513_Cross_Site_Authentication_and_Data_Transfer
怎么做 - 显然共享 cookie 在那里不起作用。
我建议查看 ActiveDirectory 或任何 LDAP 服务器以进行单点登录以访问所有应用程序。如果您不能(或不希望)使用 LDAP,您可以使用任何内存/磁盘存储实现类似的功能(但需要花费更多的开发工作/时间)。如果这不可能,请分享原因,因为它可能对其他人有用。
希望这可以帮助。