Fab*_*iro 5 azure-devops azure-managed-identity
我设法让下面的代码工作(完整代码在这里)以使用 Azure 托管标识进行身份验证(通过 Visual Studio),并在不使用凭据的情况下访问 Azure 存储帐户。
const string storageResource = "https://storage.azure.com/";
var authResult = await azureServiceTokenProvider.GetAuthenticationResultAsync(storageResource, cancellationToken: cancellationToken);
Run Code Online (Sandbox Code Playgroud)
代码设法找到我的用户登录到 Visual Studio 并使用它来获取令牌,一切顺利。
但是,此代码作为 Azure DevOps 构建管道中库集成测试的一部分执行。
我找到了在 Azure DevOps 中创建到 Azure 的服务连接时创建的服务主体,并赋予它相同的Storage Blob Data Contributor角色,希望 Azure DevOps 会使用它来运行代码,但没有成功。
所以我的问题是:
如何获取在 Azure DevOps 构建管道中运行的代码,以便能够使用AzureServiceTokenProvider?
顺便说一句,错误信息:
Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException :参数:连接字符串:[未指定连接字符串],资源:https : //storage.azure.com/,权限:。异常消息:尝试了以下 3 种方法来获取访问令牌,但均无效。参数:连接字符串:[未指定连接字符串],资源:https : //storage.azure.com/,权限:。异常消息:尝试使用托管服务标识获取令牌。无法获取访问令牌。重试 5 次后失败。MSI ResponseCode: BadRequest, Response: {"error":"invalid_request","error_description":"Identity not found"} 参数:连接字符串:[未指定连接字符串],资源:https:, 权威: 。异常消息:尝试使用 Visual Studio 获取令牌。无法获取访问令牌。在“C:\Users\VssAdministrator\AppData\Local.IdentityService\AzureServiceAuth\tokenprovider.json”中找不到 Visual Studio 令牌提供程序文件:连接字符串:[未指定连接字符串],资源:https ://storage.azure 。 com/ , 权限: . 异常消息:尝试使用 Azure CLI 获取令牌。无法获取访问令牌。错误:请运行“az login”来设置帐户。
TearDown : System.NullReferenceException : 未将对象引用设置为对象的实例。
Joh*_*ren 13
当您在 Azure DevOps 中创建服务连接时,您会看到(截至撰写本文时)4 个选项。
发布配置文件是 Azure 应用服务特定的身份验证机制,可让你通过 Kudu 进行发布。
管理身份有些标签错误。它们用于允许运行 Azure 管道的 VM 充当该 VM 的托管标识(然后向此托管标识授予对您希望它能够在 Azure 门户中访问的资源的访问权限)。这与其他身份验证方法的工作方式有些倒退,但我认为当您在 Azure 中的 VM 上托管自己的 Azure 管道时,这是有意义的。此选项有此警告。
只能在暴露(又名)AzureServiceTokenProvider的环境中工作。托管的 Azure DevOps 管道不是这样的环境。MSI_ENDPOINTIDENTITY_ENDPOINT
服务主体是您很可能会使用的。
服务主体有自动和手动两种形式。再次出现标签错误。实际上,自动选项并没有什么自动功能,唯一发生的事情是它为您在 Azure AD 中配置服务主体。它将授予服务主体订阅级别的贡献者角色(这意味着对订阅中除访问控制之外的所有内容的完全访问权限)。您不应授予服务主体此类访问权限。这是过度的。请记住,您的服务主体仅受凭据保护,如果它们泄露,任何人都会造成无法挽回的伤害。
| 归档时间: |
|
| 查看次数: |
5550 次 |
| 最近记录: |