我使用下面找到的ADAL ruby gem并遵循user credentials
文件夹中的samples
示例:
https://github.com/AzureAD/azure-activedirectory-library-for-ruby
我在Azure AD中设置了一个本机客户端。我能够成功获取https://management.core.windows.net/的令牌并使用该令牌执行部署。同样,我可以通过Postman在HTTPS请求中使用它来检索我的azure密钥保险库。
问题:
我需要从我的密钥保险库中检索一个秘密。使用上面的令牌,我得到401 unauthorized
。我尝试生成新令牌,这次将RESOURCE
设置为https://vault.azure.net
,我收到以下错误:
AADSTS65001:用户或管理员未同意使用ID为{client-id}的应用程序。发送此用户和资源的交互式授权请求。
我正在使用Azure支持,我们一直在遵循相同的步骤。当我使用ruby gem时,他正在使用.NET库。我的请求与Azure支持之间存在显着差异:
Azure支持获取令牌的请求会发送grant_type
标头,其值设置为client_credentials
。我发送了相同的标头但是以password
作为值。
我也尝试过创建一个Web应用程序而不是本机应用程序来测试它。我正在关注ruby gem repo中给出的样本。这也无法检索management.core
和vault.azure.net
的令牌。它确实成功获得了图API的令牌。
对于为什么我无法使用此库获取azure密钥保管库的令牌,我们非常感谢。
答案 0 :(得分:2)
Azure支持已经确认这是使用password
授权类型的本机应用程序的错误(在验证本机应用程序时应该使用该类型。)
在Azure在已注册的AD应用程序中添加密钥保管库应用程序权限设置之前,您需要使用Powershell的客户端ID:
1950a258-227b-4e31-a9cf-717495945fc2