0

按照下面提到的步骤使用 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 作为用户提供的范围"); }

4

2 回答 2

0

我们已经在我们的 SDK 中为您传递了范围内的 openid,这就是为什么我们要确保您不会再次传递它的原因 :-)

于 2016-04-18T19:37:46.360 回答
0

仅传递客户端 ID 作为执行 openid 流的范围。

更新

此问题已在 2.0.2-alpha 中修复。

于 2016-04-18T18:06:05.813 回答