使用JAVA在Microsoft Azure中创建VM

时间:2016-01-27 07:06:12

标签: java azure azure-active-directory azure-virtual-machine

我想使用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?有没有办法通过证书获得授权?那些步骤是什么?

2 个答案:

答案 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/