gpt4 book ai didi

c# - 生成的 AAD CallbackUrl 是 IP 地址,与部署到服务结构时应用程序注册中的回复 Url 不匹配

转载 作者:行者123 更新时间:2023-12-03 02:49:15 24 4
gpt4 key购买 nike

我正在使用 Azure Active Directory 和部署到 Azure Service Fabric 的 ASP.NET Core 2.2 Web 应用服务来设置身份验证。我使用 Visual Studio 中的模板进行设置,在本地部署时效果很好。然而,当我将其部署到 azure 时,我收到“AADSTS50011:请求中指定的回复 url 与为应用程序配置的回复 url 不匹配”错误,我注意到在 URL 中它将生成的重定向 URI 列出为 https://IP.ADDRESS:PORT#/signin-oidc 。如果我在应用程序注册中添加此 IP 地址,它不会给我错误,但将我重定向到该地址实际上不会带我去任何地方。我可以做什么来解决这个问题?

我认为这可能是一些反向代理问题,我尝试了一些修复来尝试为我提供集群上服务的绝对路径,例如:https://mycluster.azure-api.net/myapplication/myservice/signin-oidc但这些都不起作用

此外,CallbackPath 属性需要以“/”开头,因此我也不能只在那里添加完整地址,它会引发错误。

我在startup.cs中的一些代码,其中很多是自动生成的:

        public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});

services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => BindAad(options))
.AddCookie();

services.AddMvc(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}

private void BindAad(AzureADOptions options)
{
options.Instance = settings.GetSetting("AadInstance");
options.Domain = settings.GetSetting("AadDomain");
options.TenantId = settings.GetSetting("AadTenantId");
options.ClientId = settings.GetSetting("AadClientId");
options.CallbackPath = new PathString("/signin-oidc");
}



public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();

app.UseAuthentication();

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}");
});
}

最佳答案

LoekD 提供的链接应该对您有用。

您只需将代码中的回复 URL 与您的应用注册中的 URL 相匹配即可。如果它在本地工作但不适用于您发布的应用程序,则意味着您仍然在某处引用了本地 url。您需要在代码和门户 (myapp.azurewebsites.net) 中使用已发布的应用程序 URL。

关于c# - 生成的 AAD CallbackUrl 是 IP 地址,与部署到服务结构时应用程序注册中的回复 Url 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56977065/

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