所在的位置: php >> php市场 >> 干货理解SAML2协议

干货理解SAML2协议

白驳风那里治得最好 http://baidianfeng.39.net/a_zhiliao/160725/4910787.html

01SAML2综述

安全断言标记语言(英语:SecurityAssertionMarkupLanguage,简称SAML,发音sam-el)是一个基于XML的开源标准数据格式,它在当事方之间交换身份验证和授权数据,尤其是在身份提供者和服务提供者之间交换。SAML2.0可以实现基于网络跨域的单点登录(SSO),以便于减少向一个用户分发多个身份验证令牌的管理开销。

SAML主体

在SAML协议中,涉及两个主体:

ServiceProvider服务提供方,简称SP。什么是服务提供方?例如:阿里云控制台、腾讯云控制台、AWS控制台这些都是服务提供方。

IdentityProvider身份提供方,简称IdP。什么是身份提供方?Authing可以作为身份提供方,身份提供方能够向SP发送身份断言,所谓身份断言就是由Authing签发的,可以标识某个人身份的Token,只不过,在SAML协议中,这个Token的格式是XML形式的。还有一些其他的身份提供方,例如Okta、SSOCircle、Auth0,他们都可以向SP返回身份断言。

两个主体通过用户的浏览器进行信息交换。方式上,SP可以返回带参数的重定向HTTP响应,让用户立刻通过参数将信息发给IdP。而IdP会返回一个表单,同时还有一段立即提交表单的JS代码,从而让用户立刻将信息发给SP。

总结一下,SP提供服务,需要知道用户的身份,就需要向IdP询问。IdP知道用户的身份,当用户在IdP登录成功,IdP就将用户的身份以SAML断言的形式发给SP。SP信任IdP发来的身份断言,从而赋予该用户在SP的相关权限。

SAMLRequest

当用户的身份无法鉴定时,SP会向IdP发送SAMLRequest信息(通过浏览器发送),请求IdP来鉴定用户身份。

由阿里云控制台发起一次SAMLRequest的形式是这样的:

GET


转载请注明:http://www.aierlanlan.com/rzdk/2608.html