AADSTS70002:验证凭据时出错。 AADSTS50012:客户端断言不在其有效时间范围内

时间:2018-05-29 13:31:23

标签: java azure

我正在使用Microsoft Java SDK连接到Azure云。

我已经从.crt,.key&创建了一个证书(p12文件)。 root.crt中。
我已在Azure AD>应用程序注册>设置>上传公钥下上传.crt。

在我的Java代码之后,我尝试通过将p12内容和密码传递到以下API来获取Azure客户端(Authenticate):

ApplicationTokenCredentials credentials = new ApplicationTokenCredentials();
public ApplicationTokenCredentials(String clientId, String domain, byte[] certificate, String password, AzureEnvironment)

Azure azure = Azure.authenticate(credentials).withSubscription(SUBSCRIPTION_ID);

上述通话成功。但是,如果我们尝试获取azure.networks()azure.storage(),则会因以下错误而失败:

  

AADSTS70002:验证凭据时出错。 AADSTS50012:客户端断言不在其有效时间范围内。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

根据Certificate credentials for application authentication,上传公钥后。

我们还需要更新清单

  

在客户端应用程序的Azure应用程序注册中,打开应用程序清单,并使用以下架构将keyCredentials属性替换为新的证书信息:

"keyCredentials": [
    {
        "customKeyIdentifier": "$base64Thumbprint",
        "keyId": "$keyid",
        "type": "AsymmetricX509Cert",
        "usage": "Verify",
        "value":  "$base64Value"
    }
]

如果cert不是manditory,我们也可以使用azure portal生成秘密。之后我们可以通过以下方式获取ApplicationTokenCredentials

public ApplicationTokenCredentials(String clientId,
                                   String domain,
                                   String secret,
                                   AzureEnvironment environment)

注意:如果我们想要访问Azure资源,我们还需要绑定Azure AD application to role