0

我一直在使用 LAMP 系统,所以我对 MS 技术相对一无所知。我们有一个客户,其现有网站由名为 sitecore 的 .Net CMS 提供支持。他们想使用我们的产品之一,这是另一个由 LAMP 技术提供支持的网络系统。为简单起见,假设您输入 site.com,您将进入网站的 sitecore 部分,如果您输入 app.site.com,您将进入我们的 LAMP 应用程序。

我们的目标是整合这两个系统。因此,.Net 主网站将有“登录”表格,每当填写该表格时,用户都应在 .Net 系统和我们的 LAMP 系统中登录。我们显然可以完全控制我们的 LAMP 系统,我们可以在那里编写任何处理程序,但是我们对 .Net 系统没有太多控制权。我做了一些研究,LDAP 似乎是人们在这种情况下实施 SSO 的标准方式,但我仍在试图弄清楚它是如何工作的。我目前的理解是 LDAP 类似于一个外部数据库,一旦 .Net 系统配置为使用它(sitecore 确实提供了这种集成),登录表单中输入的登录+密码将针对 LDAP 进行验证。我不清楚的是,每当用户登录时,我们的 LAMP 系统将如何得到通知?所以我基本上很难理解这种集成的一般流程:用户访问 .Net 网站,输入登录+密码,获得身份验证,.Net 网站将其存储在 cookie/会话中(或在此类系统中用于这些目的的任何内容)然后我们的 LAMP 系统不知何故需要做同样的事情,但我不知道怎么做。

4

2 回答 2

2

系统基于什么并不重要。我认为您只需要很好地掌握单点登录的实际工作原理,然后您就会发现它可以与任何东西一起使用。

我将用非常基本的术语解释单点登录的工作原理。在此示例中,我们有以下站点:

  • 站点 A = Sitecore 站点
  • 站点-B = LAMP 站点

以下流程实现单点登录:

  1. 用户访问站点 A 并登录
  2. 站点 A 生成一个安全令牌((*) - 见下文)并将其存储在数据库中(我们称之为 SQL)
  3. 站点 A 设置一个 cookie,指示用户已登录
  4. Site-A 将用户重定向到 Site-B 并传递用户名、安全令牌和返回 URL(登录后要去的位置)
  5. Site-B 收到数据,获取用户名,自行生成令牌,并将其与传递的令牌进行比较
  6. 如果令牌匹配,这意味着用户可以通过身份验证,Site-B 设置一个 cookie,表明用户已登录
  7. 站点 B 重定向到返回 URL
  8. 用户现在在站点 A 和站点 B 上都登录了

(*) -- 安全令牌可以使用用户名 + 盐(比如说,作为双方都知道的秘密字符串值)之类的东西生成,这两者的连接使用 MD5 加密。因此,假设用户名是“joe”,salt 是“supersecret”,串联是“joesupersecret”,结果是 MD5 哈希。

请注意,这只是它如何工作的一个非常基本的示例。实际上,此实现有许多变体,但都归结为相同的基础。

如您所见,无论您使用的是 .NET 还是 PHP 系统,它们是否通过 LDAP 或其他方式进行身份验证都无关紧要;每个系统都处理自己的身份验证方法。

于 2013-03-08T20:15:43.140 回答
0

LDAP 只是很多东西的存储解决方案。您也可以在其中存储密码,并询问 LDAP 给定的密码对于给定的用户是否可以。因此,您可以使用 LDAP 进行身份验证。而且因为很多系统都可以使用一个 LDAP,所以您可以围绕 LDAP 构建“一个密码为所有人”的解决方案。

要按照您指定的方式使用真正的 SSO,还有一些工作要做,因为令牌的生成等远远超出了 LDAP 的范围。

有一个名为KERBEROS的 SSO 解决方案,它可以基于 LDAP 身份验证。它是 Microsoft 的 ActiveDirectory 或 Apple 的 OpenDirectory 等使用的解决方案。我相信 .Net 可以使用它,据我所知,有一些方法可以“kerberize” apaches httpd 以使用真正的 SSO。

有关更多信息,请查看http://en.wikipedia.org/wiki/Kerberos_%28protocol%29

于 2013-03-10T10:01:24.400 回答