oauth - Azure AD Ms Identity 回调 URL(错误 AADSTS50011)
问题描述
我正在使用 Angular 在 Web 应用程序上集成 Azure AD 和 MS-Identity。它可以在我的机器上运行,但是当我部署它时,我遇到了回调 URL 的问题。
首先,为了确保回调 URL 正常,我从 Microsoft 登录弹出窗口的 URL 中提取它:
然后,我对内容进行 url 解码。该 URL 看起来不错,并且在我的 Azure 应用程序的重定向 URL 中可用。
然后我正常登录 Microsoft 并收到此错误(AADSTS50011):
然后我再次检查 URL(在 urldecoded 弹出窗口 URL 的查询字符串内),现在 URL 似乎已被“篡改”。现在是这样的: http://somedomain:80 /some_page/somequerystring 而不是 https ://somedomain/some_page/somequerystring 所以我想知道这是问题的一部分还是正常行为。
还提到“如果您联系管理员,请将此信息发送给他们”。我想我是“管理员”,那么我可以用“将信息复制到剪贴板”信息来调查问题吗?
解决方案
您的应用程序托管在 http (80) 还是 https (443) 上?如果您的应用服务正在终止您的 TLS 连接并为您而不是您的应用处理该连接,则您的登录将使用 http 请求方案构建重定向。我参加了这个OnRedirectToIdentityProvider
活动来纠正这个计划。
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(options =>
{
Configuration.Bind("AzureAd", options);
options.Events ??= new OpenIdConnectEvents();
options.Events.OnRedirectToIdentityProvider += _fixRedirect;
});
...
private async Task _fixRedirect(RedirectContext context)
{
context.Request.Scheme = "https";
if(!context.ProtocolMessage.RedirectUri.StartsWith("https"))
context.ProtocolMessage.RedirectUri =
context.ProtocolMessage.RedirectUri.Replace("http", "https");
await Task.CompletedTask;
}
推荐阅读
- python - 使用 feedparser/RSS,如何在 django 中将 feed 对象从 views.py 传递到 .html?
- android - InputTextLayout 无法从其 EditText 正确执行“getText().toString()”
- php - 同一服务器之间的 FTP 连接的安全性
- c# - IdentityServer 4 和已经使用 ASP.Net Identity Framework 的 MVC 5 .Net Framework 客户端
- android - 是否可以使用 XML 布局中的数据绑定访问为 TextView 编写的扩展函数?
- c# - 使用 C# 验证 SSL 证书
- ruby-on-rails - 在我的控制器中创建一个引发加载错误的动态下拉菜单
- java - 如何将 Ignite 配置为集群 Tomcat 应用程序的缓存
- javascript - 如何使用nodejs全屏启动chrome
- flutter - 文本字段使用多行keyboardType限制行数