OAuth2 PHP 更改过期时间
OAuth2 PHP change expiration time
我使用这个库:Oauth2 PHP
我找不到更改过期时间的设置,我试过:
new OAuth2\Server($this->_mem, array('use_jwt_access_tokens' => true, 'access_token_lifetime' => 2419200));
但是令牌的生命周期始终是 3600。正确的设置是什么?
编辑: 按照建议,我尝试使用刷新令牌
new OAuth2\Server($this->_mem, array('use_jwt_access_tokens' => true, 'always_issue_new_refresh_token' => true));
client_credential 授权类型 + JWT 承载有效,但我从未获得刷新令牌(仅访问令牌)。即使经过令牌验证,我也从未获得刷新令牌。
编辑: 由于刷新对我不起作用,按照建议我尝试设置令牌过期时间
new OAuth2\Server($this->_mem, array('use_jwt_access_tokens' => true, 'access_lifetime' => 12000));
客户端凭据的响应仍然是returns一个短令牌
{ ["access_token"]=> string(648) "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpZCI6ImU0NjE0MzdhMjY2YjFkNWY0OWU5MDY5MjQwODg5NjU0MDI2ZGRmODAiLCJpc3MiOiIiLCJhdWQiOiI4OWM2MjRmNTNiYTVmOTM3NjFmZWFhNmU1MGI1ZDk1NGQ4ZGRjMTIxIiwic3ViIjpudWxsLCJleHAiOjE0MzQ0NjI2NDIsImlhdCI6MTQzNDQ1OTA0MiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoicHVibGljIHJlYWRfbmV3cyJ9.Mk_KyUk_8yPnq9eEjvgVOJXBOkQSifAPbEaUvY4X9WvfmImPnC7PJx_99ODpiJR_gMLhZ3gBl1gQEJ2z6xUZ83dntCYzGWumkVLNpJG8omuVkmZqNnbLYYXl-vzmGOblceeDrKw_lrXc4rb72BeFaMeZWwFV7YMrgA0LOsYyZmAiDblcbHtpPGpUd2EC3y7VxLnyA8u07eY4aswOHwClPlDwHX_HwfMUmDLWkoTcrRf1AvKn-cnj41eL0SU9AJHWab8AOK7lxDsaqnits5pXj--cG9hr8pWOsFPQ2D9qYOsMvbEOi4zDJEdaIp-qvzn6N5Wrm5GxdbU1AqwvM531hQ" ["expires_in"]=> int(3600) ["token_type"]=> string(6) "bearer" ["scope"]=> string(16) "public" }
这似乎是一个缓存问题,令牌现在已设置为正确的到期时间 length/time
您可以通过检查 the code.
使用 access_lifetime
OAuth2\Server
配置参数更改 access_token
生命周期
access_lifetime
配置参数用于在 OAuth2\ResponseType\JwtAccessToken
line 63 中创建令牌:
$expires = time() + $this->config['access_lifetime'];
这可以在实例化服务器时设置,它采用 OAuth2\Server
lines 109 - 126 中列出的以下配置参数。
// merge all config values. These get passed to our controller objects
$this->config = array_merge(array(
'use_jwt_access_tokens' => false,
'store_encrypted_token_string' => true,
'use_openid_connect' => false,
'id_lifetime' => 3600,
'access_lifetime' => 3600,
'www_realm' => 'Service',
'token_param_name' => 'access_token',
'token_bearer_header_name' => 'Bearer',
'enforce_state' => true,
'require_exact_redirect_uri' => true,
'allow_implicit' => false,
'allow_credentials_in_request_body' => true,
'allow_public_clients' => true,
'always_issue_new_refresh_token' => false,
'unset_refresh_token_after_use' => true,
), $config);
根据 Server.php
和 JwtAccessToken.php
的代码,也支持刷新令牌。
在 server.php 中(您传递授权类型和客户凭据的位置)
$config = array(
'access_lifetime' => 86400
);
$server = new OAuth2\Server($storage, $config);
我使用这个库:Oauth2 PHP
我找不到更改过期时间的设置,我试过:
new OAuth2\Server($this->_mem, array('use_jwt_access_tokens' => true, 'access_token_lifetime' => 2419200));
但是令牌的生命周期始终是 3600。正确的设置是什么?
编辑: 按照建议,我尝试使用刷新令牌
new OAuth2\Server($this->_mem, array('use_jwt_access_tokens' => true, 'always_issue_new_refresh_token' => true));
client_credential 授权类型 + JWT 承载有效,但我从未获得刷新令牌(仅访问令牌)。即使经过令牌验证,我也从未获得刷新令牌。
编辑: 由于刷新对我不起作用,按照建议我尝试设置令牌过期时间
new OAuth2\Server($this->_mem, array('use_jwt_access_tokens' => true, 'access_lifetime' => 12000));
客户端凭据的响应仍然是returns一个短令牌
{ ["access_token"]=> string(648) "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpZCI6ImU0NjE0MzdhMjY2YjFkNWY0OWU5MDY5MjQwODg5NjU0MDI2ZGRmODAiLCJpc3MiOiIiLCJhdWQiOiI4OWM2MjRmNTNiYTVmOTM3NjFmZWFhNmU1MGI1ZDk1NGQ4ZGRjMTIxIiwic3ViIjpudWxsLCJleHAiOjE0MzQ0NjI2NDIsImlhdCI6MTQzNDQ1OTA0MiwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoicHVibGljIHJlYWRfbmV3cyJ9.Mk_KyUk_8yPnq9eEjvgVOJXBOkQSifAPbEaUvY4X9WvfmImPnC7PJx_99ODpiJR_gMLhZ3gBl1gQEJ2z6xUZ83dntCYzGWumkVLNpJG8omuVkmZqNnbLYYXl-vzmGOblceeDrKw_lrXc4rb72BeFaMeZWwFV7YMrgA0LOsYyZmAiDblcbHtpPGpUd2EC3y7VxLnyA8u07eY4aswOHwClPlDwHX_HwfMUmDLWkoTcrRf1AvKn-cnj41eL0SU9AJHWab8AOK7lxDsaqnits5pXj--cG9hr8pWOsFPQ2D9qYOsMvbEOi4zDJEdaIp-qvzn6N5Wrm5GxdbU1AqwvM531hQ" ["expires_in"]=> int(3600) ["token_type"]=> string(6) "bearer" ["scope"]=> string(16) "public" }
这似乎是一个缓存问题,令牌现在已设置为正确的到期时间 length/time
您可以通过检查 the code.
使用access_lifetime
OAuth2\Server
配置参数更改 access_token
生命周期
access_lifetime
配置参数用于在 OAuth2\ResponseType\JwtAccessToken
line 63 中创建令牌:
$expires = time() + $this->config['access_lifetime'];
这可以在实例化服务器时设置,它采用 OAuth2\Server
lines 109 - 126 中列出的以下配置参数。
// merge all config values. These get passed to our controller objects
$this->config = array_merge(array(
'use_jwt_access_tokens' => false,
'store_encrypted_token_string' => true,
'use_openid_connect' => false,
'id_lifetime' => 3600,
'access_lifetime' => 3600,
'www_realm' => 'Service',
'token_param_name' => 'access_token',
'token_bearer_header_name' => 'Bearer',
'enforce_state' => true,
'require_exact_redirect_uri' => true,
'allow_implicit' => false,
'allow_credentials_in_request_body' => true,
'allow_public_clients' => true,
'always_issue_new_refresh_token' => false,
'unset_refresh_token_after_use' => true,
), $config);
根据 Server.php
和 JwtAccessToken.php
的代码,也支持刷新令牌。
在 server.php 中(您传递授权类型和客户凭据的位置)
$config = array(
'access_lifetime' => 86400
);
$server = new OAuth2\Server($storage, $config);