【问题标题】:IdentityServer4 and Security StampIdentityServer4 和安全标记
【发布时间】:2019-08-14 17:38:34
【问题描述】:

我已向配置文件范围添加了一个附加声明,security_stamp。我的意图是在我的自定义 IProfileService 中调用 IsActiveAsync 时使用安全标记。

我可以获得我要求在我的 MVC 客户端中显示的所有声明,但是,我遇到的问题是,当对 UserInfoEndPoint 进行调用时,它仅在 UserInfoRequest 的上下文中包含以下 4 个声明。我无法知道客户端当前为该用户持有什么安全标记

人们在他们的 Identity Server 实现中是如何处理这个问题的,我是不是走错了路?

我没有使用 asp.net 身份核心。我使用了自己的用户表

【问题讨论】:

  • 您能否检查您的访问令牌并查看里面有哪些声明?
  • @mackie 谢谢伙计,你引导我解决问题,请参阅下面的答案。

标签: c# .net-core identityserver4


【解决方案1】:

感谢@mackie,他带领我解决了问题。

我忘了在我的问题中提到我正在使用混合工作流程,这意味着我正在请求一个 id_token 和一个代码(访问代码)。

我的客户有以下范围

AllowedScopes =
{
    IdentityServerConstants.StandardScopes.OpenId, // Identity resource
    IdentityServerConstants.StandardScopes.Profile, // identity resource
    IdentityServerConstants.StandardScopes.Email, // identity resource
    "API" // api resource
 },

所以@mackie 的评论引起了点击,我正在请求一个访问令牌,该令牌将用于访问定义为 ApiResource 的“API”,这意味着 ApiResource 需要了解security_stamp 声明。

我将我的 ApiResource 更新为以下内容,它现在出现在 UserInfoEndPoint 上下文中。快乐的日子!

new ApiResource("API", "API", new [] { "security_stamp" }),

很多时候,挫败感来自于不了解范围和声明如何协同工作。现在一切都开始变得更有意义了。每天都是上学日!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-13
    • 2023-03-16
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多