当客户端发送有效的刷新令牌时,在发出新的访问令牌时更改范围。

3

我正在使用来自GitHub存储库的PHP OAuth2库。

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”)。

那么,在使用刷新令牌生成新的访问令牌时是否有一种方法可以更改范围?或者我在这里做错了什么?


但是用户在授权阶段同意了不同的范围。看起来你正在尝试违反规范 ;) - hi_my_name_is
尝试使用OAuth实现用户和角色。我需要这个功能,因为如果角色本身被修改,则具有该角色的用户的范围也会发生变化。 - Krish Gowda
1
但范围是针对应用程序设置的,而不是针对用户设置的。这样,您将不得不为每个人使用不同的应用程序。用户通过接受作用域,使应用程序能够代表用户执行某些操作。您可以从oauth2提供程序获取角色,但这与范围不同,必须在其他地方进行管理。 - hi_my_name_is
1个回答

0
客户端可以在刷新令牌授权中请求新的访问令牌时“降低范围”,请参阅规范中有关scope的文档,链接如下:https://www.rfc-editor.org/rfc/rfc6749#section-6。但是您的授权服务器可能支持或不支持该功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接