我正在将SugarCRM集成到我们的产品中。我的初始身份验证步骤有一个小问题。 当我使用用户名和密码进行身份验证(密码授予)时,我得到的响应是这样的。
{
"access_token": "de236c59-...",
"expires_in": 14400,
"token_type": "bearer",
"scope": null,
"refresh_token": "58113dbf-...",
"refresh_expires_in": 14399,
"download_token": "411000d2-..."
}
现在,每次刷新令牌时,都会得到一个新的访问令牌和一个新的刷新令牌。新的访问令牌的有效期为14400,但新的刷新令牌的失效时间与上一个相同,并且我必须每四个小时再次使用用户名和密码来获取新的刷新和访问令牌。
我希望从用户那里获得用户名和密码,而根本不存储它,而只是使用刷新令牌直到其被撤销(类似于授权码流程)。此密码授予是否违反了OAuth2的目的,即我们不必向第三方显示密码?
如果此刷新令牌的有效性小于此处的访问令牌,是否有意义?
答案 0 :(得分:0)
我们可以在config_override.php文件中管理所有令牌的到期日期。
access_token生存期应小于refresh_token生存期。
//操纵access_token的生命周期
$sugar_config['oauth2']['access_token_lifetime'] = 1800;
//操纵refresh_token的生命周期
$sugar_config['oauth2']['refresh_token_lifetime'] = 3600;
如果要在固定时间段后显式使用户会话过期,则可以使用以下方法:
$sugar_config['oauth2']['max_session_lifetime'] = 1209600;