SP发起的SSO场景下SAML如何表示登录失败尝试?
接收SAML Assertion的端点确认
你说的没错,SP侧用来接收IdP POST回传的SAML认证报文的端点,就是Assertion Consumer Service(ACS,断言消费服务),你在IdP侧配置的SP回调地址,本质就是ACS的访问URL。
IdP侧用户认证失败的流程逻辑
在SP与IdP配置完全无误的前提下,用户在IdP侧主身份认证、MFA环节校验失败时,有两种主流处理逻辑:
- 部分IdP会直接在自身站点展示认证失败提示,直接终止SSO流程,不会向SP发送任何报文,用户停留在IdP的错误提示页
- 符合SAML 2.0标准规范的IdP会生成认证失败响应,按正常流程回传给SP
失败报文的相关说明
如果IdP选择向SP回传失败通知,该报文的通用术语是SAML失败响应,它和认证成功的返回报文属于同一类<Response>报文,并非独立的报文类别:
- 该报文不会携带有效用户身份Assertion,只会在
<Status>节点下返回对应错误码标识失败原因,常见认证失败的错误码为urn:oasis:names:tc:SAML:2.0:status:AuthnFailed - 认证成功的SAML响应会携带包含用户身份信息的
<Assertion>节点,失败响应要么不携带<Assertion>节点,要么该节点为空,仅通过状态位传递失败信息
接收端点一致性说明
无论是成功还是失败的SAML响应,默认都会发送到SP的同一个ACS端点。你在SP侧做报文解析时,需要优先校验<Status>节点的状态值,先判断本次认证的结果是成功还是失败,再执行后续的登录态下发或者错误跳转逻辑。
内容的提问来源于stack exchange,提问作者ABCD.ca
相关产品推荐
相关产品推荐

