平台:API键弃用和新的参考令牌

JFrog支持
2023-03-29 07:46

作者:或者Gat

JFrog遗留的API键

当JFrog在JFrog Artifactory 4.4.3中引入API密钥时,这些密钥为用户提供了一个实用的解决方案,可以轻松地创建一个秘密。这个密钥可以在JFrog Artifactory的REST API或通过JFrog CLI和包管理器等客户端使用,而不是他们的密码。

使用API密钥背后的原因是基于安全考虑:因为用户倾向于在多个应用程序中重复使用相同的密码,所以使用特定于应用程序的凭据(仅适用于JFrog产品的凭据)更安全。hth华体会最新官方网站这也适用于那些根本不想与JFrog共享密码的用户——例如当使用SAML/OAuth进行UI身份验证时。

然而,尽管有这些优势,API key仍然存在一些安全性和可用性限制。出于这个原因(以及其他原因),JFrog决定不使用API密钥,并引入一种新的身份验证机制——引用令牌。

那么为什么JFrog弃用API键呢?

虽然它们很容易创建和使用,但API密钥有一些特性使它们不那么安全:

  • API键是可检索的-键保存在数据库中,可以通过REST API或UI检索。
  • API密钥没有生命周期管理特性——因为API密钥创建时没有有效期,并且默认情况下永远不会过期,用户或Artifactory管理员必须手动撤销它们。单个用户在任何时候都可以拥有单个活动API密钥——这意味着单个密钥需要与多个客户端共享。如果它被撤销,那么所有客户端都将被撤销。
  • API密钥不可管理—管理员不能监视或管理用户的API密钥。

介绍JFrog访问和身份令牌

JFrog的访问令牌是标准的JSON Web令牌(jwt),通过设置各种令牌属性来提供灵活性和安全性,这些属性反过来控制令牌的权限、生命周期、可访问性等。你可以阅读更多关于JFrog 's的信息这里的访问令牌

一种类型的访问令牌称为身份标识,这是一个访问令牌,范围(目标)到特定用户的权限(他们的身份)。使用身份令牌是访问其他类型令牌的关键。

如何分三步取得身份令牌:

就像旧的API密钥一样,你可以通过转到用户配置文件页面来创建一个身份令牌:

用户添加图片

1]进入Web用户界面右上角的“编辑个人资料”菜单
2]选择“生成身份令牌”按钮
3]您现在有一次机会复制令牌文本

你可以使用这个令牌来代替密码访问应用程序,就像API密钥一样:

卷-u青蛙:cm[…]] http://localhost: 8081 / artifactory / api /系统/平

您也可以使用此令牌来生成访问令牌。身份令牌是这里的关键,你必须在“授权:持票人标题,出于安全原因:

curl -H "授权:不记名cm[…]" -d "scope=applied-permissions/user" -XPOST -v http://localhost:8081/access/api/v1/tokens


"token_id": "bbf4fc27-be5f-40d2-9b19-9181ea21900b",
"access_token": "ey[…]",
"expires_in": 31536000,
scope: " application -permissions/user",
"token_type": "持有者"

Artifactory管理员可以为其他用户生成令牌,或创建临时用户,但他们也仅限于使用Identity或Admin令牌来实现:

curl -H "授权:不记名cm[…]管理员ID令牌…" -X POST -d "username=frog -pipeline" -d "scope=applied-permissions/groups:readers"
http://localhost:8082/access/api/v1/tokens


"token_id": "58f781d5-f59d-4f7c-972c-d78e4018c4ec",
"access_token": "eyJ[…]bA",
"scope": " application -permissions/groups:readers",
"token_type": "持有者"

什么使身份令牌有用?

因为访问令牌可以使用不同的作用域创建,这意味着您可以设置访问令牌的范围财产归"applied-permissions /用户”。

例如,如果您使用“= applied-permissions /用户范围"和"主题= User1,您已经为User1创建了一个Identity令牌。这意味着你已经授予了令牌User1的权限,因为它们是由JFrog的角色和权限函数在平台中定义的。当用户通过JFrog平台web中的Profile页面生成一个令牌时,生成的令牌始终是一个Identity token(范围限于登录用户的权限)。

因为JFrog的Access令牌是标准的jwt,因此它们可能相当长——因为它们包含令牌的属性(范围、主题和其他),以及用于验证令牌的附加信息。事实上,令牌的长度可能会与试图通过JFrog平台进行身份验证的各种客户端产生兼容性问题。此外,一些客户端甚至可能不支持承载令牌身份验证(Authorization: holder )。为了减轻这些长度限制,JFrog引入了参考标记

什么是引用令牌?

引用令牌只是一个简短的字符字符串,它引用了一个实际的令牌。
要获得引用令牌,用户可以使用create-token请求API,通过将“include_reference_token”参数设置为true来请求该令牌。他们还可以使用JFrog平台web配置文件页面来生成这个令牌。

注意:当通过用户的Profile页面创建令牌时,该参数总是设置为true,并且最终UI生成的令牌为始终是引用令牌

然后,引用令牌可以作为承载令牌使用JFrog平台进行身份验证,类似于API Key(带有JFrog API Key头),甚至可以作为替代的基本凭证。

为什么要使用参考令牌?

与API密钥不同,参考令牌是管理用户身份验证的一种更安全的方式,因为它们“继承”了访问令牌的安全特性。

以下是新参考令牌的一些额外优点:

  • 引用令牌不可检索——引用令牌被存储为散列,因此它们不能从UI、REST API或数据库中检索,这使得它们不太可能被破坏。
  • 参考令牌可以有一个默认的有效期——Artifactory管理员可以为参考令牌设置一个默认的有效期。它们还可以控制默认的过期时间,并决定令牌是否可刷新。
  • 一个用户可以有多个引用令牌——与API键不同,一个用户可以创建多个引用令牌
  • 可以通过JFrog平台UI查看引用令牌信息,也可以撤销令牌——用户和管理员都可以使用。
  • 参考令牌可以以多种方式使用-参考令牌可以类似于API密钥,使用“X-JFrog-Art-Api”标头,但也可以作为基本凭据使用“curl -u User1:<参考令牌>”或作为承载令牌“curl - h授权:承载<令牌>”。
  • 参考令牌很短(64个字符)——与身份令牌不同,参考令牌可以用于不支持长令牌/密码的客户端

我如何准备从API密钥迁移?

考虑一下从API密钥迁移到您需要更新密码的方式。这个过程是快速和简单的,可以由任何用户完成-你不需要请求你的管理员的协助。

在短期内——为了使向引用令牌的迁移更加顺利——您将能够继续使用API键。在即将到来的JFrog平台版本中,我们将添加一个选项,允许管理员记录每个请求的身份验证方法,这将允许管理员查看哪些用户正在使用API密钥进行身份验证。

当然,如果您希望禁用新API密钥的创建之前要正式弃用JFrog,请执行以下操作:在“$ JFROG_HOME / artifactory / var / etc / artifactory / artifactory.system.properties”,
设置属性“artificial .security. apikey”。blockCreate "改为true。