【发布时间】:2023-03-19 00:53:01
【问题描述】:
我正在使用来自这个 github repo 的 php oauth2 库。
每当我发送刷新令牌时,我都会收到具有旧范围的新访问令牌。 但我想更改使用新访问令牌返回的范围。
当我第一次使用用户凭据授权类型生成令牌时,我会获取用户支持的范围并以这种方式存储它们。
$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 提供程序获取角色,但它与范围不同,必须在其他地方进行管理。