Asp.net core mvc 使用Sustainsys和Identity Server 4的Saml2单点注销(单点注销服务响应EURL)
我正在将Sustainsys Saml2与Identity Server 4一起使用。一位客户问我是否支持SAML单次注销 他们要求: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
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
};
我有两个问题:
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。你明白了吗?找不到显示如何配置注销的示例。