gpt4 book ai didi

具有 Azure 应用程序网关和基于路径的后端池的 Azure B2C

转载 作者:行者123 更新时间:2023-12-03 00:22:12 25 4
gpt4 key购买 nike

我无法理解如何在 .Net Core 3.1 MVC 应用程序上配置 Azure AD B2C 身份验证,该应用程序已使用后端池和基于路径的 URL 映射在 Azure 应用程序网关后面进行配置。

我有一个使用 Nuget 包的 .Net Core MVC (3.1) 应用程序 (Microsoft.AspNetCore.Authentication.AzureADB2C.UI - v3.1.5)。

appsettings.json 文件包含:

"AzureAdB2C": {
"Instance": "...://foo.com/tfp/",
"ClientId": "guid",
"CallbackPath": "/Home/Index",
"Domain": "foo.onmicrosoft.com",
"SignUpSignInPolicyId": "do",
"ResetPasswordPolicyId": "re",
"EditProfilePolicyId": "mi"
}

startup.cs(在ConfigureServices方法中)具有:

services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme).AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options));

Azure 应用程序注册:我创建了一个带有重定向 URI 的应用程序注册:

https://localhost:5555/Home/Index

在本地使用应用程序时,一切正常/可以执行身份验证。

我将该应用部署到 Azure 应用服务。此后,我再次更新了应用程序注册,这次包含应用程序服务的 URI(默认提供):

https://myapp.azurewebsites.net/Home/Index

使用应用程序服务 URL 处理应用程序时,一切正常/可以执行身份验证。

问题:当我配置后端池以指向我刚刚创建的应用程序服务时,就会出现问题。我执行的步骤是:

  1. 在应用程序网关中,点击“后端池”创建新的后端池,其中“目标类型”为“应用服务”,“目标”为我创建的应用服务。
  2. 在应用程序网关边栏选项卡中,单击“规则”,更新现有的“基于路径”规则之一(我们已使用特定 URL https://ourdomain.com 配置监听器)以包含后端池的基于路径的规则 (我创建的那个)。
  3. 然后,我再次更新了 Azure 应用程序注册,这次包含基于后端池路径的 URL ourdomain.com/myapp/Home/Index

浏览至 https://ourdomain.com/myapp 时,路径解析并且一切正常;但是身份验证已损坏并且不起作用。

经检查,我注意到当我使用应用服务默认 URL“登录”时,调用是:

....://foo.com/foo.onmicrosoft.com/b2c_1a_signup_signin_loa0/oauth2/v2.0/authorize?client_id=guid&redirect_uri=https%3A%2F%2Fmyapp.azurewebsites.net%2FHome%2FIndex&response_type=id_token&scope=openid%20profile&response_mode=form_post....

参数“重定向 URI”设置为 myapp.azurewebsites.net

但是,当我使用后端池路径 (ourdomain.com/myapp)“登录”时,会使用相同的“重定向 URI”吗?

当然,重定向 URI 应该是后端池路径之一 ourdomain.com/myapp

尽管添加了重定向 URI(在应用程序注册中),但为什么它不适用于基于后端池的路径?我还需要配置更多内容吗(在 Azure/代码中)。你能指出我正确的方向吗?

提前谢谢您。

最佳答案

首先解释一下 - 应用程序注册中的重定向 URI 列表是您允许在此应用程序注册中使用的 URI 列表。当用户流程(在您的情况下 - b2c_1a_signup_signin_loa0)将使用该列表中的任何值作为redirect_uri参数打开时,它们将正常工作。

现在是您可以尝试的建议,请注意我从未使用过您的组合,因此我没有 1:1 的经验。但是,我猜您的应用程序仍然“认为”它是 myapp.azurewebsites.net(无论您是否使用 ourdomain.com),因为这就是它受到 Azure 应用程序网关攻击的方式。在这种情况下,重定向 URI 由中间件处理,您只能通过 CallbackPath 选项更改路径。您可以做的是让应用程序网关使用特定的主机 header 访问您的后端。这样,正确的主机将从应用程序网关向下传播到您的后端,并希望也传播到redirect_uri。

这里是文档引用:https://learn.microsoft.com/en-us/azure/application-gateway/application-gateway-web-app-overview#override-host-header-in-the-request

关于具有 Azure 应用程序网关和基于路径的后端池的 Azure B2C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66443365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com