更新时间:2023-07-05
在了解AC SAML2.0功能模块的原理前,我们需要先了解在SAML(安全断言标记语言)规范中涉及到的四个相关术语:它们分别是IDP、SP、Client和Assertion,具体含义如下:
• IDP:Identity Provider(身份提供商),作为身份提供者,它创建、维护和管理用户的身份信息,并向区域内的其他服务提供者提供身份验证。
• SP:Service Provider(服务提供商),作为服务提供者,通过解析IDP发出的身份认证断言,验证用户身份认证信息后,给区域内其他系统提供服务。
• Client:用户,在经过IDP认证之后可通过浏览器访问SP提供的受保护资源。
• Assertions:断言,断言是身份提供商(IDP)对Client所做的声明,包括Client的电子邮件地址、与之关联的组或角色等等信息,断言定义了身份提供商在向服务提供商传递的认证响应报文所包含的用户属性,即用户具体的属性均包含在认证响应报文的Assertion字段中 。
在AC通过SAML 2.0协议对接企业身份认证系统后,AC充当SP角色,企业的身份认证系统作为IDP提供身份验证服务,入网用户的浏览器作为Client。
当Client在未通过认证时访问AC保护的网络资源,会被AC重定向至认证页面,此时Client选择SAML认证,那么AC(SP)就会向IDP发出SAML身份认证请求,请求IDP对当前用户进行身份验证,同时AC会将Client重定向至IDP的认证页面。Client在IDP上完成身份认证校验后,IDP会根据身份校验结果生成一个SAML身份认证响应(SAMLResponse)报文返回给Client,此时Client再次被重定向至AC并提交对应的身份认证响应报文,AC通过与IDP提前协商的公钥和算法来验证Client提供的响应报文的真实性,如果该用户的认证结果正确且未超时,则提取对应的用户名和IP信息并在AC上完成上线,反之则拒绝该用户接入网络。
整个过程分为两个环节,分别是认证交互和SAML身份认证响应报文校验,认证交互阶段是Client去IDP校验身份,并将认证后得到的SAML身份认证响应报文返回给SP,以供SP校验Client的身份信息,其交互流程如下所示:
步骤8作为SAML身份认证响应报文校验环节,AC(SP)会提取应答报文里的SAML Assertions信息进行校验处理,涉及到的内容如下所示:
1、IDP身份和签名值是否合法。
2、报文是否处于有效期内;
3、提取对应的用户名和认证状态。
其中在签名校验环节,分为assert模式、response模式、assert和response模式。assert模式只对响应报文里的assertion字段做签名,response模式是对整个响应报文做签名校验,assert和response模式是对assertion字段+responese字段的整体做签名校验。
注意:在AC的SAML 2.0功能模块中,签名计算只支持assert模式或response模式,不支持assert和response模式。