如何配置Java应用程序作为身份提供者。

10
我有一个非常简单的Java Web应用程序,可以管理用户注册和身份验证。我想将这个应用程序作为SAML身份提供者使用。然后,我将创建另一个简单的Web应用程序,需要在用户使用之前进行身份验证。因此,基本上我希望我的第一个应用程序成为IdP,而我的第二个应用程序成为服务提供商。工作流程应该是这样的:用户进入app2。App2将用户重定向到app1,其中用户得到身份验证。如果身份验证成功,则app1将用户重定向到app2,用户就可以完全访问它了。我对SAML相对较新。是否有任何教程可以帮助我轻松完成呢?
2个回答

6
请看 Shibboleth,它是一个现成的 SAML 身份提供者实现。如果您已经有一个应用程序,想要作为身份提供者,那么有两个选择:
  1. 配置 Shibboleth 使用您的用户数据模型作为验证源(不确定是否可行)
  2. 使用用于实现 Shibboleth 的 Java 库 OpenSAML-Java。这只提供了处理(创建、验证、交换)SAML 断言的 Web SSO 概要文件的功能。您必须在 App2 和 App1 中自己创建 Web 请求重定向的过程。

SAML 不太简单,而且它是一个全面的标准,为其他更简单的标准(如 OpenID 或 OAuth)提供了示例(它们有一些共同原则,但肯定更简单)。这跟 CORBA vs. Java RMI 的情况基本相同。

以下是一个很好的起点,可以帮助您获得一些关于使用 SAML Web Browser SSO Profile 时所做的基本理解:


3
你的问题有两个部分。
你需要:
- Java SAML 服务器(STS) - Java SAML 客户端
编写 STS 是一个不容易的问题。你最好使用现有的实现。OpenAM 是另一种可能性。它支持多种身份库选项。
在客户端方面,请参考 SAML : SAML 连通性 / 工具包

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接