ACCESS:如何解决在ACCESS配置中设置“max-expiry”值后错误“未能生成令牌”
主题:
如何解决在7.28.0以下的Artifactory版本的Access Configuration中配置“max-expiry”值时的错误。
影响版本:7.28.0以下的手工版本
描述
生成Access Token时,默认过期时间为31536000秒(365天)。属性中的“default-expiry”值可以更改默认的过期时间访问配置文件($ JFROG_HOME / artifactory / var / etc /访问/ access.config.import.yml)。
为了不允许为非管理员用户生成不可过期的令牌,并限制最大到期时间,您可以配置“max-expiry”值。
例如,
令牌:
Default-expiry: 20000 //如果没有定义,将使用Default-expiry value (315360000s)
Max -expiry: 30000 //将不允许创建不可到期的令牌,并将令牌的最大到期限制为设置的值。定义时必须遵循' max-expiry ' >= ' default-exipry '。
但是,在7.28.0以下的Artifactory版本中,上述更改可能会导致以下问题。
方法创建新令牌时用户配置文件页面时,他们可能会遇到以下错误“未能生成令牌”消息。
即使使用REST API调用创建令牌也会失败,并出现以下消息:
curl -H "授权:持有人eyJ2ZXI…Lxg3ox5KMgQ" -XPOST http://localhost:8082/access/api/v1/tokens -H "内容-类型:应用程序/json" -d '{"用户名":"tuser"}'
"error": "invalid_request",
"error_description": "创建不可过期令牌被禁用。"请求到期=null,默认到期=20000,最大到期=30000"
决议
要解决此问题,请将Artifactory升级到7.28.0及以上版本。您可以从以下网站下载Artifactory的最新版本在这里.
使用Artifactory的最新版本,我们可以从User Profile页面生成令牌。
同样,通过REST API调用,我们可以为用户生成令牌。
curl -H "授权:持有人eyJ2ZX…n5zNA579vtw" -XPOST http://localhost:8082/access/api/v1/tokens -H "Content-Type: application/json" -d '{"username":"tuser"}'
{
"token_id": "83a9001c-5009-42ca-91a3-5ebd34c44c5f",
"access_token": "eyJ2Z…dnOBw",
"expires_in": 20000,
scope: " application -permissions/user",
"token_type": "持有者"
}
