Azure Web App EasyAuth 回调抛出错误

Azure Web App EasyAuth callback throws error

我有一个 ASP.NET MVC 应用程序,运行 作为 Azure Web 应用程序。

我使用 pre-authentication/EasyAuth,对于 5 个部署槽,它工作正常。他们每个人都有自己的 Azure AD 应用程序注册。

但是生产站点(不是部署槽,应用程序的根)在登录后在 /.auth/login/aad/callback 路径中抛出错误:

我将 Azure AD 应用程序清单与有效的清单进行了比较,唯一的区别是名称、描述和 URL - 正如预期的那样。

使用Kudu查看一个错误,好像是来自EasyAuthModule

所以,基本上这是使用的应用程序注册的问题,是从另一个部署槽创建的。

即使网络应用程序的 Authentication / Authroization 设置为 Express,也选择了正确的应用程序注册 - 事实证明它没有将客户端密钥从应用程序注册转移到网络应用程序(在我的案例,它有错误的密钥):

要修复它,您可以如上图切换到高级,打开关联的应用程序注册并创建一个新密钥:

密钥在您保存之前不会显示,并且只会显示一次。复制它,并将其插入 Web App 的 Client Secret 输入。

保存所有刀片后,可以切换回快速身份验证。设置和密钥将保留。

因为我无法发表评论,所以我会添加我的案例作为答案,比评论时更详细。

我在 ASP.NET MVC 应用程序 运行 中收到来自 Easyauth 的错误消息与 Azure App Service Web 应用程序完全相同。

最初的错误消息只是 "The page cannot be displayed because an internal server error has occurred." 并且通过 FTP and/or Visual Studio Server Explorer and/or Cloud Explorer 我可以在之后查看真正的错误页面从 App Service Logs 设置详细的错误消息。这些错误与 MartinHN 使用 Kudu 得到的错误相同。

所以在更详细的错误中,主要显示的 500.74 错误最初将我指向了错误的方向 (MFA)。但是 Request Url (.auth/login/aad/callback ) 错误消息表明发生了内部服务器错误,这让我想到了这个 SO 问题。

在我的例子中,虽然我已经在 App Services Active Directory 身份验证中选择了高级配置。而且客户端密钥不仅仅是错误的。原来客户端密码已经过期了。但这对我来说并不明显,因为我无权访问 AAD。我不得不联系一个单独的广告团队来检查秘密。

所以过期的客户端密码(密钥)也可能导致同样的错误。