使用itfoxtec-identity-saml2

时间:2019-11-14 14:23:46

标签: asp.net-core .net-core claims itfoxtec-identity-saml2

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

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

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

非常感谢!

1 个答案:

答案 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 = ..,
    });