【问题标题】:Is to possible to expose Security Stamp from Asp.Net Core Identity as a claim for OIDC是否可以从 Asp.Net Core Identity 公开 Security Stamp 作为 OIDC 的声明
【发布时间】:2019-03-14 18:34:19
【问题描述】:

我将IdentityServer4Asp.Net Core Identity 一起使用,我想检查我的MVC 客户端(连接到IdentityServer4)用户的SecurityStamp 已更改。

我的想法是将SecurityStampid_token 中的声明一样公开,并在某些情况下在Cookie 中间件中检查我的MVC 客户端。

如果用户的安全标记已更改,则需要重新登录。

我想创建这个往返行程,特别是因为我想检查用户的角色是否发生了变化。

1) 像声明一样公开SecurityStamp 是不是不错的选择?

2) 有什么方法可以检查用户的安全印章在 OIDC 中是否仍然有效?还是有必要为此建立我自己的端点?喜欢自己的 API?

【问题讨论】:

    标签: asp.net-core identityserver4 asp.net-core-identity openid-connect


    【解决方案1】:

    我们已经做到了,而且效果很好。我将其作为令牌中的st 声明返回,并且还通过用户信息端点返回,因此客户端可以轻松检查它是否已更改。

    然后,我们要求(内部)客户端通过 userinfo 端点定期检查 st 没有更改。我们还有一个自定义的模拟实现,客户端以相同的方式检查模拟授权撤销。

    简而言之 - 是的,这是一个好主意 (IMO),不,您不需要构建 API - 只需通过 userinfo 端点公开它。

    【讨论】:

    • 你能分享一些实现细节吗?特别是您如何检查客户部分的 st 声明?您使用 Cookie 中间件中的哪个事件?谢谢。
    • @jenan 你自己有没有做过这个工作,你如何确保将安全标记发送到 userinfo 端点?
    • @Phil 我刚刚扩展了 DefaultClaimsService 以添加我自己的声明并实现了我自己的 IUserInfoResponseGenerator ,它的作用相同。
    • @mackie 您是如何将自定义 IUserInfoResponseGenerator 注入身份服务器服务的?
    • @Phil 如果您在注册 IdentityServer4 之后在 Startup 中注册它,那么新绑定将覆盖默认值。即:services.AddTransient<IUserInfoResponseGenerator, CustomUserInfoResponseGenerator>();
    猜你喜欢
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    相关资源
    最近更新 更多