我想使用Java REST API在Microsoft Azure中创建VM。为此,我最初通过传递以下值来获取使用Microsoft登录凭据的访问令牌:
grant_type: client_credentials, client_id: {my_client}, client_secret: {my_client_secret}, resource:{http://localhost}
然后我得到一个大的访问密钥。然后我使用此访问密钥调用create VM REST api。但它的未经授权的错误如下。
"code": "InvalidAuthenticationTokenAudience",
"message": "The access token has been obtained from wrong audience or resource 'http://localhost'.
它应该与其中一个允许的受众完全匹配(包括正斜杠)' http://localhost',#39; http://localhost'。"。
如何正确调用Microsoft Azure身份验证并使用JAVA创建VM?有没有办法通过证书获得授权?那些步骤是什么?
答案 0 :(得分:0)
您似乎可能会使用不正确的网址来进行Azure资源管理。
根据the offical example in Java for create VM,您可以在代码注释中看到下面的网址,用于请求访问令牌。
/**
* Create a VM with VirtualNetwork and storage account
* within a subscription using a service principal for authentication.
* To use the sample please set following environment variable or simply replace the getenv call
* with actual value:
*
management.uri=https://management.core.windows.net/
arm.url=https://management.azure.com/
arm.aad.url=https://login.windows.net/
arm.clientid=[your service principal client id]
arm.clientkey=[your service principal client key]
arm.tenant=[your service principal tenant]
management.subscription.id=[your subscription id (GUID)]
*
* @param args arguments supplied at the command line (they are not used)
* @throws Exception all of the exceptions!!
*/
您可以尝试参考其他示例ServicePrincipalExample.java来检查您的代码是否为网址& ids是正确的。
希望它有所帮助。最诚挚的问候。
答案 1 :(得分:0)
有三种类型的访问令牌:
生成令牌时 1)对于ARM资源 给资源= https://management.core.windows.net/
2)对于ASM资源
给资源=
https://management.azure.com/