我已经在ASP.NET Core 2.2应用程序中实现了ITFoxtec Identity SAML2软件包,并且运行良好!
我们的应用程序要求之一是,当管理用户更改其角色成员身份时,应更新用户的声明(他们所处的角色等),从而“无效”其cookie中的声明,从而必须更新。 我一直在研究该主题,并且我能找到的大多数信息都与ASP.NET Identity UserManager / RoleManager / SecurityStamp / SignInManager的用户管理方式有关-我们不使用此方法,并且鉴于此,我们不打算使用此方法我们改用Saml2。
您是否对通过ITFoxtec-Identity-Saml2登录后如何触发索赔刷新有任何建议,而无需强迫他们重新登录?
非常感谢!
答案 0 :(得分:0)
恐怕SAML 2.0标准不支持您的场景。基本上,SAML 2.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 = ..,
});