首页 > 解决方案 > 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 所以我想知道这是问题的一部分还是正常行为。

还提到“如果您联系管理员,请将此信息发送给他们”。我想我是“管理员”,那么我可以用“将信息复制到剪贴板”信息来调查问题吗?

标签: oauthazure-active-directorysingle-sign-onmicrosoft-identity-platformmicrosoft-identity-web

解决方案


您的应用程序托管在 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;
}

推荐阅读