使用itfoxtec-identity-saml2时动态刷新用户声明

问题描述 投票:0回答:1

我已经在ASP.NET Core 2.2应用程序中实现了ITFoxtec Identity SAML2程序包,并且运行良好!

我们的应用程序要求之一是,当管理用户更改其角色成员身份时,应更新用户的声明(他们所处的角色等),从而使Cookie中的声明“无效”,因此必须对其进行更新。我一直在研究此主题,并且我能找到的大多数信息都与ASP.NET Identity UserManager / RoleManager / SecurityStamp / SignInManager的用户管理方式有关-我们不使用此方法,并且鉴于此,我们不打算使用此方法我们改用Saml2。

您是否对通过ITFoxtec-Identity-Saml2登录后如何触发理赔刷新有任何建议,而不必强迫他们重新登录?

非常感谢!

asp.net-core .net-core claims itfoxtec-identity-saml2
1个回答
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 = ..,
    });
© www.soinside.com 2019 - 2024. All rights reserved.