{"meta":{"title":"在工作流中使用 GITHUB_TOKEN 进行身份验证","intro":"了解如何使用 GITHUB_TOKEN 代表 GitHub Actions 进行身份验证。","product":"GitHub Actions","breadcrumbs":[{"href":"/zh/actions","title":"GitHub Actions"},{"href":"/zh/actions/tutorials","title":"教程"},{"href":"/zh/actions/tutorials/authenticate-with-github_token","title":"使用 GITHUB_TOKEN 进行身份验证"}],"documentType":"article"},"body":"# 在工作流中使用 GITHUB_TOKEN 进行身份验证\n\n了解如何使用 GITHUB_TOKEN 代表 GitHub Actions 进行身份验证。\n\n本教程将指导你如何在 GitHub Actions 工作流程中使用 `GITHUB_TOKEN` 进行身份验证，包括将令牌传递到操作、发出 API 请求以及配置权限以实现安全自动化的示例。\n\n有关参考信息，请参阅 [GitHub Actions 的工作流语法](/zh/actions/reference/workflow-syntax-for-github-actions#permissions)。\n\n## 在工作流程中使用 `GITHUB_TOKEN`\n\n可以使用标准语法引用密钥以使用 `GITHUB_TOKEN`：`${{ secrets.GITHUB_TOKEN }}`。 使用 `GITHUB_TOKEN` 的示例包括将令牌作为操作的输入，或使用它来建立验证的 GitHub API 请求。\n\n> \\[!IMPORTANT]\n> 即使工作流没有明确将 `GITHUB_TOKEN` 传递到操作，操作也可以通过 `github.token` 上下文访问 `GITHUB_TOKEN`。 作为一种良好的安全做法，应该始终通过限制授予 `GITHUB_TOKEN` 的权限，确保操作只有所需的最低访问权限。 有关详细信息，请参阅“[GitHub Actions 的工作流语法](/zh/actions/reference/workflow-syntax-for-github-actions#permissions)”。\n\n### 示例 1：将 `GITHUB_TOKEN` 作为输入传递\n\n此示例工作流程使用 [GitHub CLI](/zh/actions/using-workflows/using-github-cli-in-workflows)，该方式需要 `GITHUB_TOKEN` 作为 `GH_TOKEN` 输入参数的值：\n\n```yaml copy\nname: Open new issue\non: workflow_dispatch\n\njobs:\n  open-issue:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      issues: write\n    steps:\n      - run: |\n          gh issue --repo ${{ github.repository }} \\\n            create --title \"Issue title\" --body \"Issue body\"\n        env:\n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n```\n\n### 例2：调用 REST API\n\n可以使用 `GITHUB_TOKEN` 进行经过验证的 API 调用。 此示例工作流程使用 GitHub REST API 创建议题：\n\n```yaml\nname: Create issue on commit\n\non: [ push ]\n\njobs:\n  create_issue:\n    runs-on: ubuntu-latest\n    permissions:\n      issues: write\n    steps:\n      - name: Create issue using REST API\n        run: |\n          curl --request POST \\\n          --url https://api.github.com/repos/${{ github.repository }}/issues \\\n          --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \\\n          --header 'content-type: application/json' \\\n          --data '{\n            \"title\": \"Automated issue for commit: ${{ github.sha }}\",\n            \"body\": \"This issue was automatically created by the GitHub Action workflow **${{ github.workflow }}**. \\n\\n The commit hash was: _${{ github.sha }}_.\"\n            }' \\\n          --fail\n```\n\n## 修改 `GITHUB_TOKEN` 的权限\n\n在工作流程文件中使用 `permissions` 键来修改 `GITHUB_TOKEN` 对于整个工作流程或单个作业的权限。 这允许您为工作流程或作业配置所需的最小权限。 作为一种良好的安全做法，应授予 `GITHUB_TOKEN` 最低所需访问权限。\n\n若要查看可使用权限的列表及其参数化名称，请参阅 [管理个人访问令牌](/zh/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#account-permissions)。\n\n本文前面部分中的两个工作流程示例展示了在作业级别使用的 `permissions` 键。\n\n## 授予额外权限\n\n如果您需要一个带有在 `GITHUB_TOKEN` 中无法获取的权限的令牌，请创建一个 GitHub App 并在您的工作流中生成安装访问令牌。 有关详细信息，请参阅“[在GitHub Actions工作流中使用GitHub应用发出经过身份验证的 API 请求](/zh/apps/creating-github-apps/guides/making-authenticated-api-requests-with-a-github-app-in-a-github-actions-workflow)”。 或者，可以创建 personal access token，将其作为机密存储在存储库中，并使用 `${{ secrets.SECRET_NAME }}` 语法在工作流中使用令牌。 有关详细信息，请参阅 [管理个人访问令牌](/zh/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) 和 [在 GitHub Actions 中使用机密](/zh/actions/security-guides/using-secrets-in-github-actions)。\n\n## 后续步骤\n\n* [GITHUB\\_TOKEN](/zh/actions/concepts/security/github_token)\n* [GitHub Actions 的工作流语法](/zh/actions/reference/workflow-syntax-for-github-actions#permissions)"}