Asp.net core mvc 使用Sustainsys和Identity Server 4的Saml2单点注销(单点注销服务响应EURL)

Asp.net core mvc 使用Sustainsys和Identity Server 4的Saml2单点注销(单点注销服务响应EURL),asp.net-core-mvc,saml-2.0,identityserver4,sustainsys-saml2,Asp.net Core Mvc,Saml 2.0,Identityserver4,Sustainsys Saml2,我正在将Sustainsys Saml2与Identity Server 4一起使用。一位客户问我是否支持SAML单次注销 他们要求: 单一注销请求URL 单一注销响应URL 据我所见,Sustainsys可能支持这一点,因为存在以下属性 var idp = new Sustainsys.Saml2.IdentityProvider(new EntityId("https://sso.acme.com"), opt.SPOptions) { Me

我正在将Sustainsys Saml2与Identity Server 4一起使用。一位客户问我是否支持SAML单次注销

他们要求:

  • 单一注销请求URL
  • 单一注销响应URL
  • 据我所见,Sustainsys可能支持这一点,因为存在以下属性

     var idp = new Sustainsys.Saml2.IdentityProvider(new EntityId("https://sso.acme.com"), opt.SPOptions)
                            {
    MetadataLocation = "/metadata/sso-meta.xml",
                            LoadMetadata = true,
                            AllowUnsolicitedAuthnResponse = true,
                                SingleLogoutServiceResponseUrl = "INSERT",
                                SingleLogoutServiceBinding = Saml2BindingType.HttpRedirect
                            };
    
    我有两个问题:

  • 我只能看到一个与他们的请求匹配的属性——SingleLogoutServiceResponseUrl(我没有看到SingleLogoutService请求的属性)。如何配置单个注销请求Url
  • 如何确定这些Url的值
  • 谢谢

  • 出站注销请求被发送到Idp上配置的
    SingleLogoutUrl
    SingleLogoutResponseUrl
    是一种特殊的方法-它仅在响应应发送到Idp上与请求不同的端点时使用。通常它们是相同的,如果未设置
    SingleLogoutResponseUrl
    ,则响应和请求都使用
    SingleLogoutUrl
  • 向国内流离失所者询问这些问题
  • 还有一点需要注意:您正在加载元数据。然后,所有内容都应该已经在元数据中,您可以将代码缩短为

    var idp = new Sustainsys.Saml2.IdentityProvider(new 
    EntityId("https://sso.acme.com"), opt.SPOptions)
    {
         MetadataLocation = "/metadata/sso-meta.xml",
         AllowUnsolicitedAuthnResponse = true,
    };
    

    如果我添加
    Binding=Saml2BindingType.HttpPost
    ,这是否会得到尊重,或者设置是从sso-meta.xml文件中获取的?我遇到的情况是,sso-meta.xml文件包含HttpRedirect和HttpPost的条目,并且无论我是否添加了
    Binding=Saml2BindingType.HttpPost
    ,它总是使用HttpRedirect。编辑-我刚刚从sso-meta.xml中删除了HttpRedirect的条目,现在它只使用HttpPost。如果POST和重定向都可用,它将更喜欢重定向。几分钟后刷新文件内容时,元数据文件中的设置将覆盖手动设置。“如果使用单次注销,则需要确保返回的标识中存在包含Saml2注销信息的声明。索赔类型可在Saml2ClaimTypes.SessionIndex和Saml2ClaimTypes.LogoutNameIdentifier中找到“-我明白这意味着什么,但不知道在哪里添加它们?与所有其他身份验证提供者一起,我可以绑定到一个事件中,该事件允许我使用声明更新上下文。从我所看到的Saml2既有事件也有通知,但是我不知道如何连接到它们。我查过了样本,解决了。问题出在SignInManager上。SignInAsync重建了委托人,我们失去了索赔权。按照本例,通过创建自定义SignInManager(以所需格式添加所需声明)进行修复-我仍然不知道应该在何处以及如何添加这两个声明SessionIndex和LogoutNameIdentifier。你明白了吗?找不到显示如何配置注销的示例。