使用Sustainsys.Saml2.Owin对接ADFS时SAML请求Issuer配置问题
解决Sustainsys.Saml2.Owin配置Issuer及MSIS7085错误问题
1. 设置正确的SAML Issuer(saml2:Issuer)
要修正SAML请求中的Issuer值,直接在Owin Startup类的Saml2认证配置里,通过SPOptions.EntityId指定正确的实体ID,这就是ADFS期望的saml2:Issuer值。
示例代码:
using Sustainsys.Saml2; using Sustainsys.Saml2.Owin; using System.Collections.Generic; public void Configuration(IAppBuilder app) { app.UseSaml2Authentication(new Saml2AuthenticationOptions { SPOptions = new SPOptions { // 这里设置正确的Issuer值,必须和ADFS信赖方的标识符完全一致 EntityId = new EntityId("https://dummy.dev"), // 配置SP的回调URL,需与ADFS中设置的回复URL匹配 ReturnUrl = new Uri("https://dummy.dev/signin-saml2") }, IdentityProviders = new List<IIdentityProvider> { new IdentityProvider( // ADFS的实体ID,通常是http://<adfs-domain>/adfs/services/trust new EntityId("http://dummy.com/adfs/services/trust"), Options.SPOptions) { // 自动加载ADFS元数据,或手动配置单点登录地址 LoadMetadata = true, SingleSignOnServiceUrl = new Uri("http://dummy.com/adfs/ls/") } } }); }
注意:ADFS中对应的**信赖方信任(Relying Party Trust)**的标识符(Identifier)必须设置为
https://dummy.dev,否则ADFS会拒绝请求。
2. 解决MSIS7085签名错误
你已经通过命令将ADFS信赖方的SignedSamlRequestsRequired设为false,但仍报错,需检查以下两点:
- 确保配置生效:执行命令后必须重启ADFS服务,否则设置不会生效:
Restart-Service ADFSSRV - 确认ADFS信赖方配置:检查ADFS中该信赖方的
SignedSamlRequestsRequired是否确实为false,可通过命令验证:Get-ADFSRelyingPartyTrust -Name "YourRelyingPartyName" | Select-Object SignedSamlRequestsRequired
如果后续需要启用SAML请求签名(推荐生产环境使用),需:
- 为SP生成或获取签名证书(PFX格式)
- 在Saml2配置中添加证书:
SPOptions.SigningCertificate = new X509Certificate2("path/to/your-signing-cert.pfx", "cert-password"); - 将该证书导入ADFS的信赖方信任的签名证书列表中
- 将ADFS的
SignedSamlRequestsRequired设为true:Set-ADFSRelyingPartyTrust -TargetName "YourRelyingPartyName" -SignedSamlRequestsRequired $true
内容的提问来源于stack exchange,提问作者Akhil Khandelwal
相关产品推荐
相关产品推荐

