我们正在多个应用程序上实现SSO上的单个标志,这些应用程序托管在不同的域和不同的服务器上。

现在,如图所示,我们引入了一个身份验证服务器,它实际上与LDAP交互并对用户进行身份验证。这些应用程序将用于/talk来验证服务器,它们托管在不同的服务器和域上。
对于SSO,我不能使用会话变量,因为有不同的服务器和不同的应用程序,不同的域,域级别的cookie/session变量是没有帮助的。
我正在寻找一个更好的解决方案,可以用于跨他们的SSO。是否存在任何已演示的实现?如果是这样的话,请张贴它或指出我的正确方向。
发布于 2013-08-08 09:26:14
您可以通过在auth服务器上进行所有登录来实现这一点。其他应用程序可以通过反向通道与auth服务器通信。一般原则如下:
下面是SSO位的位置:
该方法有一些现有的实现,例如CAS (中央身份验证服务)。请注意,CAS在弹簧安全中是开箱即用的。我建议您考虑使用现有的实现,因为编写自己的实现非常困难。我在我的回答中简化了一些事情,如果你是新手的话,有很大的可能会引入安全漏洞。
发布于 2013-08-16 14:40:37
我会建议你去看看OAuth。它是一种很好的认证和授权协议,广泛应用于facebook、google、windows live等多个大型组织。它可能有一个初始的学习曲线,但它是一个生产级的解决方案。
它还为Java、Ruby、PHP和一系列其他编程语言提供了库。
例如,以下服务器端实现可用于Java。
以下客户端Java库也可用:
详情请参阅此处:
发布于 2013-08-14 21:56:46
更大的问题是如何实现单点登录。许多开源甚至专有(IBM )产品值得他们的salt提供跨域的单点登录功能。这将是实现跨域sso的最简单和最好的方法。您可以配置在您选择的sso服务器中使用的LDAP服务器。
以打开sso为例,下面是一篇在http://docs.oracle.com/cd/E19681-01/820-5816/aeabl/index.html上配置跨域单符号的文章
要在开放的sso中配置LDAP,http://docs.oracle.com/cd/E19316-01/820-3886/ghtmw/index.html
关于这个问题的参考资料在这里的一个简洁的图表中给出了http://docs.oracle.com/cd/E19575-01/820-3746/gipjl/index.html
根据所使用的提供,您可以配置跨域单点登录。
这样,您的关系图将如下所示,其中auth服务器是与您选择的sso服务器交互的实用工具。
拥有与sso通信的auth服务器是一个合理的体系结构原则。我建议调用作为REst端点进行身份验证,这些端点可以通过http从不同的应用程序调用。

https://stackoverflow.com/questions/18121278
复制相似问题