【问题标题】:Refresh Roles in IdentityServer-Clients刷新 IdentityServer-Clients 中的角色
【发布时间】:2021-05-24 21:14:39
【问题描述】:

我有一个带有一些客户端的身份服务器,它工作得很好。我的问题是,当其中一位管理员更改用户的角色时,客户需要注册并登录才能获得新的声明和角色。

我的问题是,有没有办法让角色在更改角色后自动更新,而无需退出和登录?

如有任何帮助,我将不胜感激:)

【问题讨论】:

    标签: asp.net-core identityserver4


    【解决方案1】:

    您可以在客户端定义中将此标志设置为 true,以便在刷新时重新加载访问令牌中的声明

    UpdateAccessTokenClaimsOnRefresh 获取或设置一个值,该值指示是否应在刷新令牌请求时更新访问令牌(及其声明)。

    https://docs.duendesoftware.com/identityserver/v5/reference/models/client/

    对于刷新令牌,我添加了一些来自我的培训课程的图片,这些图片可能会更好地了解刷新令牌(您使用 offline_Access 范围请求它们)

    当您请求该范围并表示同意时,您将获得一个额外的“刷新令牌”

    然后您可以使用刷新令牌请求新的访问令牌。

    图片(取自我的培训课程)显示了滑动刷新令牌的工作原理:

    当访问令牌即将到期时,您确实要求提供新令牌(使用刷新令牌)。访问令牌的生命周期比刷新令牌短。

    您可以手动执行此操作,也可以使用 IdentityModel.AspNetCore 之类的库为您执行此操作。

    【讨论】:

    • 感谢您的回复。我的客户中已经有了这个标志,当用户再次登录时,声明会更新。我认为问题是,我无法正确获取刷新令牌。我只是无法理解 refreshtoken 和 access_token 之间的区别。如果您对此有指导意见,我将不胜感激:)
    • 添加了更多关于刷新令牌的信息。刷新令牌永远不会发送到 API,只与您的令牌提供程序一起使用。
    • 非常感谢您的澄清。这很有帮助。在开始实施和测试之前我唯一剩下的问题是,我如何触发它,要求新的“访问令牌”以更新声明。
    • 这是否使问题成为可接受的答案?您通常以用户身份登录以获取访问 + 刷新令牌。您确实需要在 Client 定义中设置 AllowOfflineAccess = true 并请求 offline_access 范围。或者您使用刷新令牌来获取新令牌。见docs.duendesoftware.com/identityserver/v5/tokens/refresh
    • 感谢您的回复。我试图了解过去的时间,如果他们已经有到期时间,我应该什么时候请求新的 refresh_token。我想我在这里遗漏了一些东西。使用 SlidingRefreshTokenLifetime 它设置它什么时候到期,对吧?然后呢?它应该自动请求一个新的 refresh_token,还是我应该制作一个中间件,在那里我必须手动检查,如果 Refresh_token 过期,然后请求新的?如果您有这部分的示例代码,我将非常感激:)
    猜你喜欢
    • 2023-03-22
    • 2014-07-31
    • 1970-01-01
    • 2021-03-16
    • 2016-10-07
    • 2017-07-30
    • 1970-01-01
    • 2011-01-01
    • 2017-07-01
    相关资源
    最近更新 更多