我有一个应用程序,它使用 Azure DevOps PAT 在存储库和管道中执行写入和读取操作。
最近我发现,我可以使用 Azure Entra ID
App Registrations
联合凭据来完成此操作。
我对 Azure Entra ID 非常陌生,找不到任何资源,如何使用这些凭据执行任何操作,就像使用 Azure DevOps PAT 一样。
github
但似乎我不确定如何为我的用例做到这一点;
如果您遇到或实施过这样的解决方案,有人可以帮助我吗?
据我所知,在 Azure DevOps 中,Microsoft Entra 应用程序的联合凭据只能用于 Azure Resource Manager 服务连接。
如果您想使用 Microsoft Entra 应用程序作为访问 Azure DevOps 资源的身份验证,您可以尝试按照以下步骤为应用程序生成访问令牌(Microsoft Entra ID 令牌):
如果当前租户中没有服务主体,请转至 Microsoft Entra ID > 应用程序注册 创建服务主体。
打开服务主体,转到证书和机密 > 客户端机密选项卡,如果没有现有的有效客户端机密,可为服务主体创建客户端机密。复制并记住客户端密钥的值。
转到 组织设置 > Microsoft Entra,确保组织已连接到服务主体所在的租户。
转到 组织设置 > 用户,搜索服务主体并将其添加到组织中。
将服务主体添加到组织的某个组中,以便您可以通过组织中的该组来管理服务主体的权限。
您可以使用以下方式之一来生成令牌:
使用 Bash 脚本。
access_token=$(curl -X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
'https://login.microsoftonline.com/{tenant_ID}/oauth2/v2.0/token' \
-d 'grant_type=client_credentials&client_id={client_id}&client_secret={client_secret}&scope=499b84ac-1321-427f-aa17-267ca6975798/.default' \
| jq -r '.access_token')
{tenant_ID}
替换为租户的 目录(租户)ID。{client_id}
替换为服务主体的应用程序(客户端)ID。{client_secret}
替换为在服务主体中创建的客户端密钥的值。使用邮递员。
此 Microsoft Entra ID 令牌的有效期只有 24 小时,因为 Microsoft Entra 将定期轮换令牌。因此,您需要至少每 24 小时刷新一次令牌。
有关更多详细信息,请参阅“使用服务主体和托管身份”。