Skip to main content

SAML协议

SAML(Security Assertion Markup Language 安全断言标记语言)是一个基于XML的开源标准数据格式,为在安全域间交换身份认证和授权数据,尤其是在IDP(Identity Provider身份提供方)和SP(Service Provider 服务提供方)之间。SAML是OASIS(Organization for the Advancement of Structured Information Standards 安全服务技术委员会)制定的标准,始于2001年,其最新主要版本SAML 2.0于2005年发布。SAML解决的最主要的需求是基于Web的单点登录(SSO)。

关于SP和IDP说明

IDP(Identity Provider):一种服务提供者,它创建、维护和管理主体的身份信息,并向联邦内的其他服务提供者提供主体身份验证;

SP(Service Provider):一种服务提供者,通过解析IDP发出的身份认证断言,验证主体身份认证信息后,给主体或联邦内其他系统提供服务。

流程图

(1)用户请求目标资源(经由浏览器)

(2)重定向到IDP的SSO服务

(3)浏览器转发请求,重定向到IDP的SSO服务

(4)IDP解析SAML请求

(5)认证用户

(6)认证成功后返回SAML响应

(7)浏览器将SAML响应转发到SP的ASC端点(ASC为接收SAMLResponce的端点)

(8)SP解析验证SAML响应

(8)用户获取目标资源

(8)目标资源

1.1 /auth/saml20/[IDP颁发的应用标识](GET)

该步骤主要验证appId,SAMLRquest相关参数以及用户是否具备应用访问权限等动作,成功后进入断言签名端点

示例地址

#发起地址示例 http://127.0.0.1/auth/saml20/91122311122231?SAMLRquest=xxxxxxx

1.2 /auth/saml20/assertion

该步骤处理签名响应内容,签名成功后请求到Sp认证地址并携带SAMLResponse参数

响应示例地址

http://127.0.0.1/saml20/login?SAMLResponse=xxxxx

1.3 添加应用

进入应用管理-新增应用,选择SAML,如下图所示

1.4 表单参数说明

参数说明

名称必填备注
应用图标应用的图标
应用编码只能输入数字和字母长度不超过64位
应用名称长度不超过64位
应用访问路径系统默认访问路径,
账号映射主体默认手机号码,根据应用自身选择账号体系,例如,选择手机号码,用户主体对象为手机号码
元数据(matadata)支持上传sp元数据文件,支持XML格式上传,快速构建SAML应用
SP ACS URL(SSO Location)SAML回调地址,认证成功后会往回调地址进行回调,颁发SAMLResponce
EntityId提供者的EntityID(唯一标识符)
Issuer提供者的EntityID(唯一标识符)
Audience授众地址
NameIdFormat主体属性条目
BindingSAML协议中规定的Binging方式,不同的Binding方式使用不同的通信方式和消息体,常用方式是SP使用HTTP Redirect Binding通过浏览器将SAMLRequest转发到IDP的SSO地址,IDP使用HTTP POST Binding方式将用SAMLResponse返回到SP的ACS地址。