Shibboleth代理至Azure AD重定向时RequesterID验证错误
Shibboleth IdP代理Azure AD时AADSTS7500522错误解决方法
问题说明
代理认证时触发Azure AD错误:
AADSTS7500522: XML element 'RequesterID' in XML namespace 'urn:oasis:names:tc:SAML:2.0:protocol' in the SAML message must be a URI.
SAML追踪显示,发往Azure的请求中RequesterID是SP的短名称实体ID,不符合URI要求:
<saml2p:Scoping> <saml2p:RequesterID>EntityIDShortName</saml2p:RequesterID> </saml2p:Scoping>
解决方案
一、Azure AD端的验证无法关闭
Azure AD强制遵循SAML 2.0协议规范,不支持关闭RequesterID必须为URI的验证规则,无法通过门户或命令行修改这一限制。
二、Shibboleth IdP端的处理方案
有两种可行方式:
1. 修改SP实体ID为URI格式
如果能调整服务提供商配置,直接把SP的实体ID改成URI格式(比如https://你的域名.com/sp/EntityIDShortName),这是最合规的解决方式,从根源解决协议兼容问题。
2. 配置Shibboleth控制RequesterID
如果没法修改SP实体ID,可以通过Shibboleth配置调整SAML请求内容:
- 移除RequesterID:在Shibboleth IdP的
conf/relying-party.xml中,针对Azure AD的信赖方配置添加规则,禁止发送Scoping元素:
<bean parent="SAML2.SSO" p:includeScoping="false" />
- 转换RequesterID为URI:如果必须保留
Scoping元素,可以自定义拦截器,把短名称格式的RequesterID替换成URI格式(比如给短名称加上域名前缀)后再发送给Azure AD。
内容的提问来源于stack exchange,提问作者NickH48226
相关产品推荐
相关产品推荐

