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 | 是 | 主体属性条目 |
Binding | 是 | SAML协议中规定的Binging方式,不同的Binding方式使用不同的通信方式和消息体,常用方式是SP使用HTTP Redirect Binding通过浏览器将SAMLRequest转发到IDP的SSO地址,IDP使用HTTP POST Binding方式将用SAMLResponse返回到SP的ACS地址。 |