2015-06-15 24 views
3

我使用這個庫:Oauth2 PHP的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交付式+智威湯遜承載的作品,但我從來沒有得到一個刷新令牌(只訪問令牌)。即使經過令牌驗證,我也從未獲得刷新令牌。

編輯:由於刷新不工作對我來說,作爲建議我嘗試設置令牌到期時間做

new OAuth2\Server($this->_mem, array('use_jwt_access_tokens' => true, 'access_lifetime' => 12000)); 

根據客戶證書的響應仍返回短令牌

{ ["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" } 

看來這是一個緩存問題,令牌現在設置爲正確的過期長度/時間

回答

2

You ca n使用access_lifetimeOAuth2\Server配置參數檢查the code來更改生命週期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.phpJwtAccessToken.php的代碼刷新令牌支持。

+0

請參閱編輯 – Eric

+0

@RaelGugelminCunha:你爲什麼提到谷歌?該問題提到了OAuth 2.0服務器PHP,而不是Google。任何人都可以在[RFC 6749](https://tools.ietf.org/html/rfc6749)上創建OAuth 2.0授權服務器,其中包括Facebook,LinkedIn,Google以及運行OP中列出項目的任何人:OAuth 2.0 Server PHP 。 – Grokify

+0

它的工作,它被困在服務器緩存中,感謝您的幫助 – Eric