按照下面提到的步骤使用 adal android 从 azure ad 获取令牌
- 版本:2.0.1-alpha
调用以下方法 authcontext.acquireToken(context,scope,scope,additional_scope, EMAIL_SIGNIN_POLICY, client_id,redirect_uri,getUserInfo(),PromptBehavior.Auto, "nux=1&", getCallback())
- 范围定义为“openid offline_access”
- 在调试应用程序和库时,从 adal 收到成功的 Web 响应
{"not_before":"****", "token_type":"Bearer", "id_token":"****", "id_token_expires_in":"****", "profile_info":"*** *", "refresh_token":"****", "refresh_token_expires_in":"*****" }
但是当 adal 解析这个响应时它会失败,因为它在 adal 库中的条件下引用
Oauth2.java
if(mRequest.isIdTokenRequest()){
expiresInLookUp = "idtoken_expires_in";
token = response.get(AuthenticationConstants.OAuth2.ID_TOKEN);
}
AuthenticationRequest.java
boolean isIdTokenRequest() {
if (mScope != null && mScope.length != 0) {
for (String scope : mScope) {
if (scope.equalsIgnoreCase("openid") || scope.equalsIgnoreCase(mClientId)) {
return true;
}
}
}
return false;
}
将范围更改为“openid”会导致异常,因为它引用了库中的以下条件
AuthenticationContext.java
if (set.contains("openid")) { throw new IllegalArgumentException("API 不接受 openid 作为用户提供的范围"); }