个人访问令牌{ #personal_access_tokens }¶
关于个人访问令牌{ #about-personal-access-tokens }¶
重要的安全问题! { #important-security-concerns }
PAT 可作为 HTTP 基本身份验证的一种更安全的替代方式、 在创建新应用程序/脚本等时,PAT 应该是您的首选。
HTTP 基本身份验证被认为是不安全的,原因包括 它会以明文发送用户名和密码。在 在未来的 DHIS2 版本中可能会被弃用或改为选择启用,这意味着基本身份验证需要在配置中明确启用。 需要在配置中明确启用。
创建令牌¶
要创建新的 PAT,您有两个选择:
注意事项
如果您只想让令牌访问服务器的某一特定部分,建议您创建一个新的特殊用户。 服务器,建议创建一个新的特殊用户,只分配 如果您只想让令牌访问服务器的特定部分,建议您创建一个新的特殊用户,并只分配给它您想让它访问的角色/权限。
服务器/脚本和浏览器上下文{ #serverscript-and-browser-contexts }¶
使用用户配置文件应用程序创建 PAT 时,系统会提示您选择 令牌的使用环境。
虽然这两种上下文都允许您指定令牌的过期日期和允许的 HTTP 方法,但它们提供的附加限制有所不同。
服务器/脚本上下文{ #serverscript-context }¶
服务器/脚本上下文适用于 DHIS2 实例不会被浏览器访问的用例,如集成和脚本。 的使用情况,如集成和脚本。
除了可以设置令牌有效期和允许的 HTTP 方法外,在这种情况下 在这种情况下,你还可以限制使用令牌的 IP 地址集。 使用令牌的 IP 地址集。例如,如果您将令牌限制在 IP 地址 91.242.200.159",而恶意方获取了您的令牌并试图从 IP 地址 142.250.187.206",您的 DHIS2 实例将拒绝这些恶意请求。 恶意请求。
重要**
IP 地址验证依赖于
X-Forwarded-For标头,该标头会被伪造。 为了安全起见,请确保负载平衡器或反向代理会覆盖该标头。
浏览器上下文{ #browser-context }¶
浏览器上下文适用于 DHIS2 实例将由网络浏览器访问的使用情况 浏览器访问您的 DHIS2 实例的使用情况,如公共门户网站和其他公共访问应用程序。 应用。
除了可以设置令牌有效期和允许的 HTTP 方法外,在这种情况下 在这种情况下,你还可以限制嵌入令牌的网站。 嵌入的网站。这种限制是通过HTTP 引用 标头 来实现这一限制。
重要**
这不是一项安全功能。
referer标头很容易被欺骗。 此设置旨在阻止未经授权的第三方开发人员连接 公共访问实例。
使用案例{ #use-cases }¶
当外部服务和集成必须与 DHIS2 实例进行安全通信时,PAT 非常有用。 与您的 DHIS2 实例进行安全通信的情况下非常有用。由于令牌继承了 的权限,因此您可以确保您的集成只能 读取和修改相关数据。
PAT 也是 HTTP 基本身份验证的一种更安全的替代方法,在创建新应用程序/脚本等时应作为首选。 是创建新应用程序/脚本等时的首选。
安全考虑{ #security-considerations }¶
像对待密码一样对待您的 PAT{ #treat-your-pats-like-passwords }¶
像对待密码一样对待令牌,并对其保密。如果您认为令牌 已泄露或被盗,请立即撤销。
如果可能,请将标记作为环境变量传递给您的脚本和应用程序 而不是硬编码。
在某些情况下可以绕过 IP 地址验证{ #ip-address-validation-can-be-bypassed-in-some-cases }¶
服务器上下文令牌的 IP 地址限制依赖于 X-Forwarded-For "头,该头可能被欺骗。为防止欺骗,请配置 负载平衡器或反向代理来覆盖该标头。
参考者 "标头不是一种安全功能{ #the-referer-header-is-not-a-security-feature }¶
虽然浏览器上下文标记的引用源限制在限制滥用方面很有用 滥用,但 referer 标头可以被欺骗。请勿依赖参考源限制 因为 referer 标头不是一种安全功能。
创建 PAT{ #creating-pats }¶
个人访问令牌通过用户配置文件应用程序创建。
- 使用用户名和密码登录,进入个人资料页面。用户 点击右上角的用户头像可进入个人资料应用程序 角,然后从下拉菜单中选择 "编辑个人资料"。
2. 从左侧导航侧边栏选择 "个人访问令牌
3. 点击 "生成新令牌 "按钮,弹出新令牌窗口
4. 为新标记选择合适的语境 5. 为令牌输入适当的失效日期 6. 可选择配置令牌的特定上下文限制(IP 服务器上下文中的地址或浏览器上下文中的引用地址)。 7. 可选择在使用令牌时,令牌应能访问哪些 HTTP 方法。 实例的 REST API 8. 点击 "生成新令牌 "按钮 9. 您的令牌只会生成并向您显示一次,因此,重要的是 现在就复制令牌密钥,并将其保存在安全的地方,以备日后使用。

重要**
生成的秘密令牌密钥只会显示一次,因此请务必 现在就复制令牌密钥,并将其保存在安全的地方,以便以后使用。 秘密令牌密钥将在服务器上进行安全散列,并且只有该秘密令牌 密钥将保存到数据库中。这样做是为了在有人 未经授权访问数据库时的安全影响,这与密码的处理方式类似。
服务器上下文{ #server-context }¶
服务器上下文的令牌可以限制使用这些令牌的 IP 地址。
这些 IP 地址可在 "允许的 IP 地址 "输入区中提供、 每行一个地址。
浏览器上下文{ #browser-context }¶
浏览器上下文的标记可限制可使用这些标记的网页。
这些 URL 可在 "允许的推荐人 "输入区中提供,每行一个 URL 每行一个。
使用 PAT{ #using-pats }¶
要使用新创建的令牌发出请求,请相应使用授权标头 相应地
授权标头格式为
删除个人访问令牌{ #deleting-a-personal-access-token }
使用 JavaScript fetch API 的示例:
``js fetch(url, { headers:{ Authorization': 'ApiToken d2pat_5xVA12xyUbWNedQxy4ohH77WlxRGVvZZ1151814092'、 } }) ```
服务器配置{ #server-configuration }¶
重要**
在 DHIS2 2.38 版本之前,PATs 功能默认为禁用。 要启用 PAT,请将 dhis.conf 文件中的
enable.api_token.authentication属性设置为on。