面向初学者的SAML简单示例

43

我是SAML v2.0技术的初学者,掌握了理论知识,但在谷歌上没有找到任何实例。有人能为我提供一个简单的“SAML v2.0”的分步示例吗?

  1. 到目前为止,我已经学习了它的理论部分,即它支持单点登录,并且我也理解了服务提供商和身份提供商。
  2. 目前我正在使用Linux环境。
  3. 我需要一个基本的、分步骤的示例,演示请求是如何从用户->身份提供商->服务提供商移动的,以及如何配置环境。
  4. 是否可以执行SAML v2.0的示例?
  5. 是否有可能在Java语言中执行SAML示例?如果可能的话,您还可以提供Java示例。

3
你应该提供更多细节。使用的是什么语言/平台?你已经尝试了什么?你已经了解哪些理论元素?如果你不付出更多努力,问题很可能会被关闭。 - Wiktor Zychla
1
我认为这个问题展示了很多努力。 - danday74
3个回答

31

SAML典型的SSO是一种称为Web SSO Profile的东西。目前市场上有许多支持此功能的产品,例如OpenAM、Shibboleth、OpenSAML和Oracle Identity Federation。具体配置取决于您选择使用的产品。我在我的书中使用的OpenSAML的工作示例可在此处找到。

在SAML层面上,SP和IDP交换元数据(Metadata),其中包含了SP和IDP希望如何通信的配置信息。

然后通过以下四个步骤进行SSO:

  1. SP发现用户没有经过身份验证的会话。
  2. SP使用SAML AutnRequest作为URL参数将用户重定向到IDP。
  3. IDP对用户进行身份验证并通过URL参数将其重定向回SP,并提供一个Artifact。
  4. SP使用ArtifactResolveRequest通过SOAP将Artifact与Assertion进行交换。

如果您想在Java中自己编写此代码,可以使用OpenSAML。在我的博客中,我有许多关于如何使用它的示例。

在我的书《使用OpenSAML的指南》中,我写了很多关于此方面的内容。

编辑:书籍的新版本已经发布,涵盖了OpenSAML v3。


1
你好,谢谢您的回复。有人可以提供SAML配置的逐步示例吗? - user2779075
使用SAML时,您需要使用某种使用SAML协议的软件。您是否正在使用此类软件? - Stefan Rasmusson
这本书介绍了该库并展示了许多IDP和Sp共同的内容,但是该书更加专注于Sp。我相信我的书会对你有所帮助。 - Stefan Rasmusson
@StefanRasmusson 有关于Android的任何示例吗? - Mightian
没有特别的,不是的。 - Stefan Rasmusson
显示剩余6条评论

6
你可以简单地按照这个手册中的步骤 操作,帮助你在本地服务提供商和公共身份提供商之间创建一个简单的SAML 2.0联合。
一旦设置完成,您可以使用它来跟踪IDP / SP之间发送的消息,并作为使用Java + OpenSAML + Spring构建的SAML组件示例。
此外,还有许多其他关于SAML的信息来源,例如上面提到的Stefan的博客。

1
在安卓设备上,由于性能原因,他们不建议使用IOC。除了Spring之外,还有其他关于安卓的SSO示例吗? - Stephen McCormick

0

enter image description here

什么是单点登录:

单点登录是一种标准化的概念,允许终端用户使用一个入口点访问多个相关但独立的软件应用程序。这意味着终端用户只需登录系统一次,即可访问多个应用程序而无需再次登录。认证过程可以合并为一个单一组件,作为每个其他应用程序的网关。它基本上以有效和安全的方式管理终端用户的身份。

欲了解更多信息阅读更多


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