我已经在一个ITFoxtec Core2.2应用程序中实现了SAML2标识包,它运行得很好!
我们的应用程序要求之一是,当管理用户更改其角色成员时,应该更新用户的声明(他们所处的角色等等),从而使cookie中的声明“无效”,从而必须更新它们。我一直在研究这个主题,我可以找到的大部分信息都与管理用户的UserManager/RoleManager/SecurityStamp/SignInManager身份ASP.NET方法有关--我们不使用这种方法,也不打算使用这种方法,因为我们使用的是Saml2。
当一个人通过ITFoxtec-Identity-Saml2 2登录,而不强迫他们实际重新登录时,您对如何触发索赔刷新有什么建议吗?
非常感谢!
发布于 2019-11-15 13:24:31
恐怕您的场景不受SAML2.0标准的支持。基本上,SAML2.0要求用户重新进行身份验证以加载新的声明。
根据您正在使用的IdP,您可以强制用户重新进行身份验证,从而加载新的声明。
强制登录:
var authnRequest = new Saml2AuthnRequest(saml2Config)
{
ForceAuthn = true,
...
};或者被动登录,这是一个平滑的解决方案,如果IdP加载更新的声明对被动登录请求,而无需重新认证。然后调用IdP,但用户从未发现它。
被动登录请求:
var authnRequest = new Saml2AuthnRequest(saml2Config)
{
IsPassive = true,
...
};或者,您需要实现一个自定义解决方案,其中应用程序调用由SAML令牌保护的端点。端点查询用户在例如。一个数据库并返回更新的索赔。如果声明被更新,应用程序可以重新登录,我认为没有注销是可能的。
就像这样:
var principal = new ClaimsPrincipal(...);
await httpContext.SignInAsync(Saml2Constants.AuthenticationScheme, principal,
new AuthenticationProperties
{
IssuedUtc = ...,
ExpiresUtc = ..,
});https://stackoverflow.com/questions/58859016
复制相似问题