我试图集成一个反应单页应用程序(SPA)与Azure广告。我正在跟踪这些文档(例如场景),并使用来自反应-aad-msal的示例来查看在基本级别上是否正常工作。
但是,当我试图访问Microsoft登录页面时,会出现以下错误:
AADSTS700054:没有为应用程序启用response_type 'id_token‘。
现在,文档非常清楚地表明,对于SPAs,使用PKCE的代码流是可行的,而不应该使用隐式授权流是因为不安全。这意味着,对于类似的问题(如这一个或另一个),建议盲目打开隐式流设置的现有答案是不够的。
是否可以在不使用隐式流的情况下为SPA启用登录(ID令牌)和API访问(访问令牌)?
(我还不确定,但react-aad-msal也有可能正在使用隐式流。我还没有找到任何设置来告诉它要使用哪个流。)
发布于 2021-01-06 11:26:33
反应-aad-msal实际上没有说明它使用的是哪个版本的MSAL。现在有2个版本
package.json文件用于react-aad-msal的JavaScript示例显然使用了MSAL1.x:
"msal": "^1.2.0",这就是我的问题所在。隐式流不能将react-aad-msal用于使用PKCE的auth代码流。
发布于 2022-02-10 13:50:40
我偶然遇到了这个建筑,Blazor (.NET 6和所有最新的库),但我认为我的解决方案可能仍然适用于一些人。
在尽可能密切地跟踪教程这里之后,我仍然收到了"id_token未启用“消息。有一件事让我很困惑,那就是教程中关于注册客户端应用程序的这一部分:

但是,如果您查看Azure Portal,实际的复选框似乎正好相反:

我将此归因于教程中的一个错误,并没有对它们进行检查,认为应该允许我使用auth代码流。什么都试过了,但还是得到了同样的信息。为了解决整个问题,我启用了访问令牌和ID令牌。
一切都开始运作了!但是查看网络流量时,它实际上是在访问应用程序时多次调用/authorize端点。第一次用response_type=id_token,然后用response_type=code。
最终意识到这是由部署在app服务上的/authsettings资源造成的。Azure试图使用response_type=id_token对应用程序服务本身进行身份验证。
在移动到没有任何身份验证设置的新应用程序服务之后,仅仅依靠应用程序的配置来重定向未经身份验证的用户,auth代码流就可以工作了,应用程序注册中的复选框也没有被选中。
发布于 2022-09-02 18:31:05
虽然我没有尝试@Ryan的解决方案创建一个全新的应用服务,但它确实激励我尝试其他的东西。我为我的应用程序使用了我现有的application,并删除了身份验证,因为我已经将它内置到我的应用程序中了。它已经在代码中被编程了。修正了ID令牌的错误。
我做了这个:
我想,如果您将所有这些都内置到应用程序代码中,那么您不需要在Azure中设置它?当我启动我的应用程序时,我现在得到了微软的登录。
因此,您可能不必重新创建一个全新的应用程序服务,尽管每个人的情况是不同的。这就是帮我修好它的原因。
编辑:此更新允许我访问我的应用程序,但我不能连接到我们的内部数据库。还在试图找出它是否与Azure中的身份验证有关。
https://stackoverflow.com/questions/65594747
复制相似问题