但是,在 AuthenticationContext 中,我没有看到任何使用此证书来获取进行使用和评估 API 调用所需的访问令牌的方法。
我也参考了这个博客,它引用了 ClientAssertionCertificate ,我在 adal 的 java 库中没有看到它。
正如 Gaurav 所说,我们只能使用 Azure Active Directory 调用 Usage & Rate Card API 进行身份验证。您可以使用 AuthenticationContext 获取access_token
如下代码。您需要提供client ID
和Client Secret
( key
)。
private AuthenticationResult getAccessTokenFromClientCredentials()
throws Throwable {
AuthenticationContext context = null;
AuthenticationResult result = null;
ExecutorService service = null;
try {
service = Executors.newFixedThreadPool(1);
context = new AuthenticationContext(authority + tenant + "/", true,
service);
Future<AuthenticationResult> future = context.acquireToken(
"https://graph.windows.net", new ClientCredential(clientId,
clientSecret), null);
result = future.get();
} catch (ExecutionException e) {
throw e.getCause();
} finally {
service.shutdown();
}
if (result == null) {
throw new ServiceUnavailableException(
"authentication result was null");
}
return result;
}
注意:我可以使用基于用户名、密码和客户端 ID 的身份验证机制对 Azure 进行 REST API 调用以获取使用情况和价目表信息,......
看来我们不能使用管理证书机制来调用 Usage & Rate Card API。因为这些调用用户或服务主体是Owner, Contributor or Reader role
请求订阅的 Azure AD 租户中的成员(请参阅此文档)。我建议您参考此文档了解如何对Azure 资源管理进行身份验证。