【问题标题】:Change scope while issuing new access token when client sends valid refresh token当客户端发送有效的刷新令牌时,在发布新的访问令牌时更改范围
【发布时间】:2023-03-19 00:53:01
【问题描述】:

我正在使用来自这个 github repo 的 php oauth2 库。

PHP oauth2 library

每当我发送刷新令牌时,我都会收到具有旧范围的新访问令牌。 但我想更改使用新访问令牌返回的范围。

当我第一次使用用户凭据授权类型生成令牌时,我会获取用户支持的范围并以这种方式存储它们。

$defaultScope = implode(" ", $scopes);$memory = new OAuth2\Storage\Memory(array('default_scope' =>$defaultScope));
$scopeUtil = new OAuth2\Scope($memory);
$this->server->setScopeUtil($scopeUtil);
$this->server->handleTokenRequest(OAuth2\Request::createFromGlobals())->send();

$scopes 是一个数组

例如 $scopes=array("ADDUSER","EDITUSER","EDITROLE");

类似地,如果我使用 refresh_token 授权类型发送刷新令牌并使用修改后的 $scopes 运行它 例如 $scopes=array("ADDUSER", "EDITROLE");

  $defaultScope = implode(" ", $scopes);$memory = new OAuth2\Storage\Memory(array('default_scope' =>$defaultScope));
$scopeUtil = new OAuth2\Scope($memory);
$this->server->setScopeUtil($scopeUtil);
$this->server->handleTokenRequest(OAuth2\Request::createFromGlobals())->send();

我收到相同的旧范围(“ADDUSER EDITUSER EDITROLE”),这些旧范围是在使用用户凭据授予类型生成新访问令牌时设置的。

所以当使用刷新令牌生成新的访问令牌时,有没有办法改变范围? 还是我在这里做错了什么?

【问题讨论】:

  • 但用户在 /authorize 阶段同意不同的范围。似乎你正试图做一些违反规范的事情; )
  • 尝试使用 oauth 实现用户和角色。我需要此功能,因为如果角色本身已修改,则具有 dat 角色更改的用户的范围。
  • 但范围是按应用程序设置的,而不是按用户设置的。这样,您将不得不为每个人使用不同的应用程序。用户通过接受范围赋予应用代表用户做某事的能力。您可以从 oauth2 提供程序获取角色,但它与范围不同,必须在其他地方进行管理。

标签: php oauth oauth-2.0


【解决方案1】:

当客户端在刷新令牌授权中请求新的访问令牌时,它可以“缩小范围”,请参阅此处规范中 scope 周围的文档:https://www.rfc-editor.org/rfc/rfc6749#section-6 但是您的授权服务器可能支持也可能不支持.

【讨论】:

    猜你喜欢
    • 2019-05-24
    • 2021-03-04
    • 2016-03-13
    • 2017-05-01
    • 2017-04-14
    • 2016-03-22
    • 2022-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多