SharePoint 2019本地部署ADFS认证遇SecurityTokenResolver密钥错误求助
以下是针对该问题的排查和解决步骤:
确认证书导入方向,别搞反
SharePoint需要ADFS的Token签名证书(公钥,.cer格式)作为SPTrustedRootAuthority,而Token解密证书是SharePoint侧生成后提供给ADFS的,两者不能混淆。操作步骤:- 从ADFS管理控制台导出Token签名证书(仅公钥)
- 将证书导入SharePoint服务器的本地计算机-受信任根证书颁发机构存储
- 用该证书的指纹创建SPTrustedRootAuthority
检查证书存储的权限配置
SharePoint应用程序池账户必须对导入的ADFS签名证书拥有读取权限:- 打开
certlm.msc,找到目标证书 - 右键>所有任务>管理私钥,添加SP应用池账户并赋予读取权限
- 打开
验证SPTrustedIdentityTokenIssuer参数正确性
确保创建命令中参数对应正确的证书:# 加载证书 $signingCert = Get-PfxCertificate -FilePath "C:\ADFS-Signing.cer" $decryptionCert = Get-PfxCertificate -FilePath "C:\SP-Decryption.pfx" # 创建信任身份提供方 New-SPTrustedIdentityTokenIssuer -Name "ADFS Provider" -Realm "urn:sharepoint:yourfarm" -ImportTrustCertificate $signingCert -SignInUrl "https://adfs.yourdomain.com/adfs/ls/" -IdentifierClaim "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" -DecryptionCertificate $decryptionCert注意:
-SigningCertificate对应ADFS签名证书,-DecryptionCertificate对应SharePoint自己的解密证书(需提前在ADFS信赖方配置中导入该证书的公钥)清除SharePoint配置缓存
配置缓存可能导致证书信息未更新:- 停止SharePoint Timer Service
- 删除
C:\ProgramData\Microsoft\SharePoint\Config\<GUID>下所有.xml文件(保留cache.ini) - 编辑
cache.ini,将数值改为1 - 重启SharePoint Timer Service
核对ADFS信赖方信任配置
- 确认ADFS中SharePoint信赖方的加密证书是SharePoint导出的公钥证书
- 确认信赖方的标识符(Realm)与SharePoint命令中
-Realm参数完全一致(大小写、格式均需匹配) - 检查ADFS是否启用了正确的签名算法(SHA256等,需与SharePoint侧兼容)
启用详细日志定位问题
在SharePoint服务器上设置ULS日志级别:- 将Claims Authentication和Security Token Service类别的日志级别设为Verbose
- 重现错误后查看ULS日志,获取密钥匹配失败的具体细节(是签名证书不匹配还是解密证书问题)
内容的提问来源于stack exchange,提问作者Txalamar
相关产品推荐
相关产品推荐

