2012-03-21 159 views
3

首先让我告诉你我的情况是
我有3服务提供商1名身份提供商。(即我是服务提供者以及身份提供者)。我想使用SAML实施SSO。
我通过以下方式编写SAML请求
SAML请求和响应在JAVA

<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

下面是摘自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)对齐的方式交换属性信息。