首页 > 解决方案 > 了解 Azure Web App 日志文件输出中的 HTTP 错误

问题描述

我有一个网络核心网络应用程序,它在本地运行和在 Azure Web 应用程序服务中运行时会显示一个登录页面。到目前为止,没有任何解释,它刚刚开始在 Azure Web App Service 中出错。据我所知,我没有更改任何会改变这一点的代码。Github 构建来自 YAML。在 Github 中没有注册任何更改。

我使用了 Chrome 开发工具并为 Azure 应用服务中的应用启用了诊断日志记录。我认为日志记录可能会给我更多信息。

总结一下。我的本地 v Azure 应用启动的比较 URL 输出如下:

https://localhost:44357/Identity/Account/Login?ReturnUrl=%2F

https://example-app-service-rollbase.azurewebsites.net/Identity/Account/Login?ReturnUrl=%2FHome%2FError%3FReturnUrl%3D%252FHome%252FError ... etc ...

在开发工具中本地 = HTTP 101 Azure = HTTP 302 Found(重定向过多。您要查找的资源已被删除、更改名称或暂时不可用。请尝试清除您的 cookie)

在 Azure CLI 中使用以下内容:

az webapp log tail --name example-app-service-rollbase --resource-group example-resources --provider http

我启动应用程序并记录日志输出。对我来说,这比问题更令人困惑(为简洁起见,我删除了时间/日期/浏览器类型和参考链接,并且正在打印连续的输出行):

EXAMPLE-APP-SERVICE-ROLLBASE GET / X-ARR-LOG-ID=fffed190-2641-4ebd-b4b8-1e3034635ffe 443 - 121.74.116.232 

以上输出为:Web App 名称、HTTP 方法、Azure Resource Reference-LOG-ID?和我的公共 IP 地址(我在专用网络的防火墙后面)

EXAMPLE-APP-SERVICE-ROLLBASE GET /Identity/Account/Login ReturnUrl=%2F&X-ARR-LOG-ID=dc48d20d-4859-4956-95e0-020c6f592afd 443 - 121.74.116.232

这就是问题出现的地方。返回网址。我的理解是 %2F returnUrl 通常只是作为一种指向上一页的机制而存在。

EXAMPLE-APP-SERVICE-ROLLBASE GET /Identity/Account/Login ReturnUrl=%2FHome%2FError%3FReturnUrl%3D%252F&X-ARR-LOG-ID=ec2e323b-b593-4272-8b61-b9b72245255d 443 - 121.74.116.232

这里是一个编码的“?” 添加 (%3F) 并且从这里返回 URLs 堆积。

在这一点上,我不明白我所看到的。除了我从开发工具获得的相同信息。

如果有人有任何想法,我将不胜感激。

标签: azureasp.net-corehttpidentityhttp-status-code-302

解决方案


Azure 使用 redirect_uri回复 URL 的这种配对和匹配 作为一种安全措施,以防止滥用您的应用程序,这样,某些人可能会尝试使用您的 Azure 应用程序坐标对他们自己的应用程序进行身份验证,并将访问令牌发送到他们的应用程序而不是你的。

使用未在我的 Azure 应用程序中配置为有效回复 URL的redirect_uri参数创建了另一个授权 URL

https://login.microsoftonline.com/1c3d2eea-12db-2ec3-437e-2eec7289e1a1/oauth2/authorize
?client_id=ef92a29b-b332-9d43-1341-23326315fa42
&response_type=id_token+token
&redirect_uri=https%3a%2f%2fpdogs- babel.azurewebsites.net%2Fcallback.html
&state=12345
&nonce=678910
&resource=https%3A%2F%2Fgraph.microsoft.com%2F

在这里,我将 redirect_uri参数设置为https://pdogs-babel.azurewebsites.net,当我将其发送到授权端点时……</p>

我们看到以下错误消息...</p>

AADSTS50011:回复地址 https://pdogs-babel.azurewebsites.net/callback.html与为应用程序配置的回复地址不匹配:ef92a29b-b332-9d43-1341-23326315fa42。

如果您使用的是隐式授权流程,这可能允许某人使用您的应用程序坐标获得访问令牌。初始授权 URL 由浏览器通过 HTTP 发送,授权端点使用HTTP 302 [Found] 响应返回回复,其Location标头值包含在redirect_uri参数中找到的 URL以及包含access_token的哈希片段

在此处输入图像描述

请在此处找到更多信息


推荐阅读