我正在构建一个 Android 应用程序,它将访问 Azure REST API 并从 azure 监控中读取一些数据。我在身份验证过程中遇到问题,因为不确定是否可以使用 MSAL 库进行身份验证以访问 Azure REST API?
1 回答
在您提到的演示代码中,资源是 microsoft graph。如果要使用 Azure 服务管理 API,我们需要将资源更改为https://management.azure.com
. 我们需要为注册的 Application 分配角色。
我不熟悉预览版 SDK,但我们也可以通过以下方式获取 Azure 管理 API 的访问令牌。
默认情况下,V2 应用程序不会显示在 Azure 门户中。所以我们需要同意许可。然后我们可以在 Azure 门户中找到它。
https://login.microsoftonline.com/{tenantId}/adminconsent?
client_id={clientId}
&state=12345
&redirect_uri={redirectUrl}
然后使用管理员帐户批准同意。之后,我们可以在 Azure 门户中找到 V2 应用程序并将角色分配给应用程序。
从这个文档中,我们可以知道 v2.0 端点不支持 OAuth 2.0 资源所有者密码凭证授予。
所以我们可以使用下面的授权码来获取访问令牌。
获取授权码
https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/authorize?client_id={clientId}&response_type=code &redirect_uri={redirect_uri} &response_mode=query &scope=https://management.azure.com/user_impersonation &state=12345
获取访问令牌
https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token?scope=https://management.azure.com/.default &client_id={clientId} &grant_type=authorization_code &redirect_uri={redirectUri} &code =AQABAAIAAAC5una0EUFgTIF8ElaxtWjT6o1ePh...
测试访问令牌