首先让我告诉你我的情况是什么
我有 3个服务提供商和 1个身份提供商。(即我是服务提供商以及身份提供商)。我想使用SAML实现SSO。
我正在以下列方式编写SAML请求
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="identifier_1"
Version="2.0"
IssueInstant="2004-12-05T09:21:59Z"
AssertionConsumerServiceIndex="0">
<saml:Issuer>https://sp.example.com/SAML2</saml:Issuer>
<samlp:NameIDPolicy
AllowCreate="true"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
我能够正确发送请求。我不明白应该如何回应。响应代码中有许多属性,如摘要,证书等。这些是什么?
是否有任何规则我只应遵循SAML协议。我可以创建自己的协议,因为我既是服务又是身份提供商?
答案 0 :(得分:1)
以下是SAML V2.0 Technical Overview的摘录。该文件真的值得一看。在此之后,您必须定义业务用例,为此用例选择一个配置文件,并实现符合此配置文件的协议。如果配置文件不存在 - 您可以定义自己的协议。请求和响应属性将取决于配置文件。
SAML由构建块组件组成,这些组件放在一起后,可以支持许多用例。这些组件主要允许在具有已建立信任关系的自治组织之间传输身份,身份验证,属性和授权信息。
核心SAML规范定义了用于传输此信息的断言和协议消息的结构和内容。
SAML断言带有关于主张声称是真实的委托人的陈述。断言的有效结构和内容由SAML断言XML模式定义。断言通常由断言方基于来自依赖方的某种请求创建,尽管在某些情况下,断言可以以未经请求的方式传递给依赖方。 SAML协议消息用于生成SAML定义的请求并返回适当的响应。这些消息的结构和内容由SAML定义的协议XML模式定义。
SAML绑定定义了使用较低级别的通信或消息传递协议(如HTTP或SOAP)在参与者之间传输SAML协议消息的方法。
接下来,定义SAML配置文件以满足特定的业务用例,例如Web浏览器SSO配置文件。配置文件通常定义对SAML断言,协议和绑定的内容的约束,以便以可互操作的方式解决业务用例。还有属性配置文件,它们不引用任何协议消息和绑定,它们定义如何使用断言以与多种常见使用环境(例如X.500 /)对齐的方式交换属性信息 LDAP目录,DCE)。