2

我从一篇不错的博客文章中了解了 SSO 原理的基本知识,请访问https://auth0.com/blog/what-is-and-how-does-single-sign-on-work/#

我认为要实现 SSO,我们使用一个中心域(例如 LDAP 或其他身份验证服务器)进行身份验证,它可以生成令牌并存储为 cookie 或仅存储在浏览器的存储中。

下次我们访问另一个域中的应用程序时,它会重定向到 Auth Server 并可以使用我们之前存储的令牌,然后我们可以获得一个新的 cookie,其中包含我们要访问的域的令牌。

通过这种方式,我认为 SSO 是使用一个中央 Auth Server 作为第三个托管服务器,或者我们可以称它为委托服务器,为不同的域生成不同的 cookie,这样我们就解决了 Single Origin Policy(cookie 只能是由其创建者访问,不能跨域)。

如果这就是 SSO 的工作方式,那么我对 IBM LTPA 感到困惑。我正在使用 WAS,并且从指南中,如果我想实现 SSO,我需要从第一台服务器获取一个 LTPA 密钥,并将其复制到我想要创建 SSO 功能的每台服务器。LTPA 密钥包括一个公钥和一个私钥,用于解密由 WAS 生成的 LTPA 令牌。

因此,如果我使用 LDAP 作为身份验证服务器,首先我在域 1 上访问我的应用程序,我的请求将被重定向到登录页面并在 LDAP 中进行身份验证后(这里我认为 LDAP 不会生成令牌),WAS 将生成一个带有 LTPA 令牌的 cookie,但是当我们想要访问域 2 中的应用程序时(该域中的 WAS 已经获得了 LTPA 密钥),我们的 LTPA 令牌可以被解密并且我们得到了我们的 userId(或者某些字段可以识别用户),然后我们再次去我们的 LDAP Auth 服务器验证这个 userId...

我不知道我的理解是否正确,但我认为这不能称为“SSO”。因为,首先,我们得到的token是WAS生成的,而不是LDAP,所以我们得到的只是一个userId,当我们解密这个token时,我们需要在LDAP中再次验证这个用户。其次,我们用来使 SSO 工作的方法是提供一个带有 LTPA 令牌的 cookie,但是 cookie 不能跨域发送......所以如果域 1 和域 2 不是同一个 Realm,这不可能发生......因为我们无法获取域 2 中的 cookie...

我几乎要疯了...

谁能告诉我 LTPA 如何通过使用 LTPA 密钥准确地作为 SSO 机制工作......

太感谢了!

4

2 回答 2

1

LTPA 是一种将身份验证从 WebSphere(或后端服务器)转移到 SSO 服务器的机制——让我们谈谈 IBM ISAM (WebSeal)

用户--->ISAM SSO (WebSeal)- LTPA 在这里---->后端服务器 WAS)

通常,后端 WAS 服务器本身不进行任何身份验证。用户向 SSO 服务器进行身份验证,SSO 服务器将加密的 LTPA 令牌发送到包含用户用户名的后端服务器(通常只有用户名、组成员身份,但从不密码)。后端服务器解密 LTPA 并作为 LTPA 并信任它。然后后端应用程序服务器 (WAS) 将此身份验证详细信息传递给应用程序。

请参阅将 IBM Cognos(WAS 上的应用程序)置于 SSO 服务器之后的示例。

http://www-01.ibm.com/support/docview.wss?uid=swg24022695

于 2017-04-14T11:31:02.067 回答
0

LTPA 是部署在 WebSphere(以及其他一些 IBM 产品,例如 Domino)上的不同应用程序之间的单点登录。它的基本功能是在一个单元中工作,在不同服务器中的各种应用程序之间工作,或者在单元之间(交换密钥的地方)更复杂的场景中工作。正如您已经发现的那样,它不是跨 DNS 域,因此它仅限于单个公司(虽然支持子域)。如果您有远程 EJB,它还支持通过 IIOP 向下游传播凭据。

如果您正在寻找跨域 SSO 机制,WebSphere 支持 SAML 和 Open ID Connect。

于 2017-04-17T13:18:36.153 回答