从Microsoft OAuth2.0获取id_token

时间:2018-04-04 06:25:58

标签: cordova ionic-framework oauth-2.0 azure-active-directory ngcordova

Cordova插件:https://github.com/nraboy/ng-cordova-oauth和离子v1

我使用的是oauthWindowslive的修改版本。我试图从{OAO2.0}获得id_token。由于我使用该服务获取一些Outlook日历数据,因此我使用以下内容:

var browserRef = window.cordova.InAppBrowser.open('https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=' + clientId + "&scope=openid+profile+User.Read"  + '&response_type=token&response_mode=fragment' + '&display=touch' + '&redirect_uri=' + redirect_uri, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');

但如果我为id_token+token插入response_type我无法进行身份验证。即使我尝试使用id_token,即使我自己尝试使用它,也无法进行身份验证。

1 个答案:

答案 0 :(得分:2)

我终于开始工作了。网络服务很挑剔两件事:

  1. id_token必须在令牌之前,它应该在response_type提示之后立即出现。 RESPONSE_TYPE = id_token +令牌
  2. 虽然文档说可以使用http://localhost/callback - 但实际上并非如此。至少,在混合应用上,它必须是https://login.live.com/oauth20_desktop.srf
  3. 有趣的是,其他Oauth服务,如谷歌和Facebook localhost / callback工作正常。微软出于某种原因需要特殊处理。如果微软的任何人正在倾听 - 请清理并合并您的身份平台和文档。它不应该花费开发人员5天来弄清楚这么微不足道的事情。