JAVA中的SAML请求和响应

时间:2012-03-21 04:47:22

标签: java single-sign-on saml

首先让我告诉你我的情况是什么 我有 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协议。我可以创建自己的协议,因为我既是服务又是身份提供商?

1 个答案:

答案 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)。