【问题标题】:How to use github oAuth token with Git plug-in JenkinsGit插件Jenkins如何使用github oAuth token
【发布时间】:2021-04-17 16:29:52
【问题描述】:

我一直在 Jenkins 中使用 Git 插件从 GitHub 存储库中提取源代码。 我一直在使用用户名和密码进行身份验证

然而,GitHub 有announced

弃用通知:GitHub 将停止对 API。您现在必须使用 API 对 GitHub API 进行身份验证 令牌,例如 OAuth 访问令牌、GitHub 应用安装访问权限 令牌或个人访问令牌,具体取决于您需要做什么 令牌

所以我需要更改身份验证以使用 oAuth 令牌。

1> 我在 GitHub 中创建了一个 oAuth 令牌
2> 然后在 Jenkins 中,我创建了 Secret Text 作为全局凭证。 (使用 GitHub 的 oAuth 令牌)
3> 但是,当我转到作业配置时,Git 插件不会在 DropDownList 中显示任何类型为 secret text 的凭据(但它会显示所有其他凭据)

如何配置 Git Pug-in 以使用 oAuth 令牌?

【问题讨论】:

    标签: jenkins github jenkins-plugins jenkins-github-plugin


    【解决方案1】:

    首先检查您是否安装了github-oauth Jenkins 插件,如“Use the Jenkins OAuth plug-in to securely pull from GitHub”中所述,来自Walker Rowe

    这将允许将您的 Jenkins 服务器注册为可以访问 GitHub 资源的应用程序:

    【讨论】:

      【解决方案2】:

      坚持使用“带密码的用户名”凭据类型,使用令牌(通常是个人访问令牌)代替密码创建。

      GitHub docs you linked to 专门提到了这种类型的用例:

      curl -u username:token https://api.github.com/user

      如果您的工具仅支持基本身份验证但您想利用 OAuth 访问令牌安全功能,则此方法很有用。


      Git 插件不接受 SecretText 凭据,因为它不知道如何处理它。虽然它不仅限于基本身份验证(毕竟它支持 SSH),但它不知道如何仅使用 OAuth 令牌。

      幸运的是,GitHub 为这种确切类型的用例提供了解决方法,允许您pass a token (virtually) anywhere you would otherwise use a password

      使用此方法,您可以利用令牌的安全功能,例如 per-token scopes,而无需改造现有工具。

      【讨论】:

        【解决方案3】:

        另一种方法是利用GitHub App authentication support

        它于 2020 年 4 月发布,GitHub Branch Source 2.7.0-beta1Jenkins experimental update center 中提供。

        为什么要作为 GitHub 应用进行身份验证?

        • 更大的速率限制 - GitHub 应用程序的速率限制随您的组织规模而变化,而基于用户的令牌的限制为 5000,无论您拥有多少个存储库。
        • 独立于用户的身份验证 - 每个 GitHub 应用程序都有自己的独立于用户的身份验证。
          不再需要“机器人”用户或确定谁应该是 2FA 或 OAuth 令牌的所有者。
        • 改进的安全性和更严格的权限 - 与服务用户及其个人访问令牌相比,GitHub 应用程序提供了更细粒度的权限。
          这让 Jenkins GitHub 应用程序需要更少的权限才能正常运行。
        • 访问 GitHub Checks API - GitHub 应用程序可以访问 GitHub Checks API 以从 Jenkins 作业创建检查运行和检查套件,并提供有关提交和代码注释的详细反馈

        还有:

        除了对 Multi-Branch Pipeline 使用 GitHub App 身份验证外,您还可以直接在 Pipelines 中使用应用身份验证。

        您可以像往常一样通过加载“用户名/密码”凭据来访问 GitHub API 的 Bearer 令牌,插件将在后台处理与 GitHub 的身份验证

        【讨论】:

          【解决方案4】:

          这个答案描述了在 Jenkins 中使用 Github 设置 OAuth 的整个过程:https://stackoverflow.com/a/61995795/9962007

          【讨论】:

            猜你喜欢
            • 2016-05-03
            • 2015-10-23
            • 1970-01-01
            • 2014-10-29
            • 2022-08-19
            • 2014-09-22
            • 2020-12-19
            • 2017-10-09
            • 1970-01-01
            相关资源
            最近更新 更多