微软ADD - 应用注册 - 请求中指定的回复url与配置的回复urls不匹配

3

我创建了一个与Azure Active Directory认证配合的Web应用程序。

在本地主机上一切正常,但是当我将应用程序发布到Azure时,我遇到了以下错误:

AADSTS50011: 请求中指定的回复URL与应用程序配置的回复URL不匹配:'656cc46c-f858-4a45-bf83-698791e052f1'。

我尝试过:

在Azure中,我配置了有关该应用程序的回复URL如下:

http://gp-rh.azurewebsites.net/signin-oidc

这是我的appsetting.json文件:

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "legroupeti.com",
    "TenantId": "7c6ff5e2-0660-4b65-9b64-7a78df412819",
    "ClientId": "656cc46c-f858-4a45-bf83-698791e052f1",
    "CallbackPath": "/signin-oidc"
  },
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  }
}

在我的应用程序中,执行登录的控制器被设置为如下:

[HttpGet]
public IActionResult SignIn() {
    var redirectUrl = Url.Action("Index", "Dashboard",
        new { date = DateTime.Now, anchor = "period" });
    return Challenge(
        new AuthenticationProperties { RedirectUri = redirectUrl },
        OpenIdConnectDefaults.AuthenticationScheme);
}

我的应用程序默认页面是/,它会重定向到/Dashboard
我不知道哪里出错了,但它仍然无法正常工作。

HTTP和HTTPS混合使用,回复URL也要使用HTTPS吗? - astaykov
1个回答

3
< p > redirect_uri 必须与您注册的 URI 之一完全匹配,包括方案 (http://, https://)。

通常,您应该仅在开发过程中使用未加密的方案 (http)。 对于测试/阶段/生产,您应始终使用安全连接 (https)。 在这种情况下,没有理由不使用 https://gp-rh.azurewebsites.net/signin-oidc ,因为azurewebsites.net 默认支持 HTTPS。


有没有办法确定正在使用哪个回复URL?我的回复URL是根据请求在代码中生成的。我现在已经到了添加每个可能的URL但仍然会出错的地步。这真让人恼火。 - Ross Brasseaux
你正在错误的方向上进行。你的 redirect_uri 应该始终保持不变。你想通过授权端点传递的任何信息都应该被编码并通过 state 参数传递。state 的目的是处理你的应用程序状态。 - Marc LaFleur
如果您为一个域加载一组组件,为另一个域加载不同的组件呢?在生产环境中,我可以使用https,但是在本地开发中,我需要将这两个域添加到我的Windows hosts文件中,并适当地登录。为什么我不能指定一个非localhost域以不安全的方式登录本地开发? - Dmitri Larionov
因为没有办法表示“dev”与“not dev”,并且保护最终用户的数据比通过编辑hosts文件带来的任何不便更为重要。 - Marc LaFleur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接