ADAL JS - 不支持 response_type="token"。

24

我正在使用adal js与Azure AD进行身份验证。 我有webApp和webApi。我的应用程序基本上遵循此示例:https://github.com/AzureADSamples/SinglePageApp-WebAPI-AngularJS-DotNet

我能够成功登录到我的webApp,adal.js成功获取了我的webApi的令牌并将其注入请求中。一切都正常工作,直到最近。然后webApi的令牌获取停止工作并显示错误:

"application不支持'response_type' 'token'"

renewToken失败:AADSTS70005:application不支持'response_type' 'token' 跟踪 ID:104c18e3-eb6e-42a4-a292-c6f170f27f65 关联 ID:c2e65622-0c58-473a-8184-b3056fb1af58 时间戳:2015-03-27 22:53:12Z

我可以清楚地看到,adal.js正在构建一个请求并将“response_type = token”放入查询字符串中。因此,我的假设是Azure AD方面发生了某些变化。

我找到了一篇文章,将response_type = token与隐式授权流相关联。我确认我的webApp已启用“oauth2AllowImplicitFlow”。我已联系MS支持并等待解决方案。同时,我希望与社区分享此问题,并查看是否有人了解有关该问题的任何信息。

谢谢

2个回答

43

如果您正在构建客户端应用程序,则需要从应用程序清单中启用隐式流。

  "oauth2AllowImplicitFlow": true,
  1. 打开你的Azure门户中的应用程序配置,从“管理清单”菜单中下载清单文件。

enter image description here

  1. 搜索oauth2AllowImplicitFlow并将其值更改为true。

  2. 通过相同的菜单上传文件。

注销并重新登录您的应用程序,它将正常工作。


也可以通过Azure AD门户进行配置:

  • 从应用程序页面,单击认证,在高级设置下,选中访问令牌ID令牌旁边的复选框以启用应用程序的OAuth2隐式授权。

有关OAuth2隐式流的更多信息>> 链接

隐式授权类型用于移动应用程序和Web应用程序(即运行在Web浏览器中的应用程序),其中客户端机密性不能得到保证...


只是一个非常快速的注意事项:在我的情况下,我不得不前往 https://apps.dev.microsoft.com,添加一个全新的应用程序。它将重定向到新创建的应用程序注册表,并有一个“添加平台”的选项。在我选择了“Web”(同样,在我的情况下)之后,“允许隐式流”复选框出现了。 - AuroMetal
1
现在,该门户网站允许您在门户刀片内编辑清单。 - pcdev
重复于https://stackoverflow.com/questions/25511096/getting-error-unsupported-response-typeerror-description-aadsts70005-with-tok/49131413#49131413 - Skorunka František

6
重新创建我的 WebApp 解决了这个问题。我仍在与微软调查根本原因。两个应用程序的清单除了它们的 AAD 客户端 ID 外并没有不同。
更新:
请查看我的评论以获取解决方案。

根本原因在于我的 WebApp 清单包含了以下设置: - serg.salo
1
我认为根本原因是我的WebApp清单包括下一个设置:“groupMembershipClaims”:“SecurityGroup”。如果我将其更改为“groupMembershipClaims”:null-突然我的WebApp开始工作。我认为问题在于当安全组与令牌一起包含时,我的令牌长度太长了。结果,当adal js构建请求以获取WebApi的令牌时-Azure AD oauth端点无法处理它,因为有关令牌大小的某些限制。 - serg.salo
2
我认为还有其他问题。我的"groupMembershipClaims"是null,但我仍然收到相同的错误消息:AADSTS70005:应用程序不支持response_type 'token' 跟踪ID:842eadd1-6363-441e-a55f-5c6faa2f7f6d 相关ID:ae983aa5-ccb4-40fd-8331-82f4d154957b 时间戳:2015-03-29+23:45:34Z然而,well-known/openid-configuration端点显示: "response_types_supported": [ "code", "id_token", "code id_token", "token" ], - Matt Mazzola
5
请确保您在清单文件中启用了oauth2AllowImplicitFlow。 - serg.salo
手动将“groupMembershipClaims”:null添加到清单中即可完成工作。+1 serg.salo! - WtFudgE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接