0

我们正在尝试为位于不同域的两个不同 Web 应用程序实现单点登录

  1. WebApplication 1(这将作为用户登录的前端)

  2. 网络应用 2

基本的使用思路是

  1. 用户通过 WebApplication 1 中的登录屏幕登录

  2. 用户单击 WebApplication 1 中的链接,然后将打开 WebApplication 2 的弹出屏幕,而无需再次登录

现在为了实现这一点,我们创建了一个 ETL 脚本,它每 1 小时运行一次,以将用户和组帐户从 Web 应用程序 1 数据库同步到 Web 应用程序 2 数据库

问题

  1. 有没有更好的方法来实现单点登录,而不是编写一个每 1 小时同步用户帐户的脚本?

  2. 我已经阅读了内置于 .net 框架 4.5 的新技术调用 WIF(Windows Identity Foundation),这将有助于解决我的上述问题吗?

4

1 回答 1

1

每小时运行一个脚本不是一个好主意,因为它是服务器的开销

实现不同域的单点登录可能有点困难,但并非真的不可能,这变得困难只是因为我们不能在不同域之间共享 cookie。所以我们可以有一台不同的服务器进行单点登录

  1. 当用户访问 Web 应用程序 1 时,将用户重定向到 SSO 服务器。
  2. 一旦用户被重定向到 SSO 服务器,检查 cookie 是否存在,因为它是第一次没有 cookie,所以显示托管在 SSO 服务器上的登录页面。
  3. 从用户获取凭据后验证用户
  4. 如果用户是有效的,现在生成一个令牌,这个令牌可以是唯一的十六进制数字或时间戳的哈希值。
  5. 将此令牌设置到 SSO 服务器上的 cookie 中,并将用户重定向回原始站点或成功页面
  6. 现在,当用户访问 Web 应用程序 2 时,再次将用户重定向到 SSO 服务器
  7. 用户进入 SSO 后,检查 cookie,如果存在且未过期,则将用户直接重定向到成功页面,无需再次要求登录凭据,或显示登录页面并再次进行练习

当我们在不同的服务器上重定向用户时,我们可以将 cookie 设置为通用名称为“SSOcookie”,并且每次来自不同应用程序时访问相同。这将帮助您实现不同域的单点登录。

于 2015-10-30T04:53:46.383 回答