ADFS 3.0向Claims Provider发送未签名AuthnRequest的原因咨询
ADFS 3.0不签名发给Claims Provider的AuthnRequest的原因及解决办法
先给你明确核心逻辑:ADFS 3.0默认就不会对发给Claims Provider的AuthnRequest签名,而且这个行为确实和对方的元数据以及ADFS本身的配置规则直接相关,咱们一步步拆解:
1. Claims Provider元数据的直接影响
ADFS会自动读取你添加的Claims Provider(也就是站点C)的元数据文件,其中有个<WantAuthnRequestsSigned>元素——如果这个元素的值是false,或者干脆在元数据里不存在,ADFS就会默认认为对方不需要接收签名的AuthnRequest,自然就不会对出站请求做签名处理。
2. ADFS 3.0的默认配置规则
和ADFS对Relying Party(比如你的站点A)的处理逻辑不同,ADFS 3.0默认没有开启对Claims Provider的AuthnRequest签名功能,而且这个配置项在ADFS的图形化管理界面里是找不到的,必须通过PowerShell来修改。
解决办法:用PowerShell强制开启签名
如果你确定站点C支持接收签名的AuthnRequest,或者业务上需要强制签名,可以通过以下PowerShell命令修改配置:
# 先获取目标Claims Provider信任的对象(替换成你的Provider实际名称) $cpTrust = Get-AdfsClaimsProviderTrust -Name "站点C的Claims Provider名称" # 启用AuthnRequest签名 Set-AdfsClaimsProviderTrust -TargetClaimsProviderTrust $cpTrust -SignSamlAuthnRequests $true
执行完命令后,记得重启ADFS服务让配置生效。另外要注意:站点C那边必须已经信任ADFS的签名证书(通常可以通过元数据同步,或者手动导入证书到他们的信任存储),否则对方会验证签名失败,导致整个认证流程中断。
内容的提问来源于stack exchange,提问作者Jonatan
相关产品推荐
相关产品推荐

