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

C# 生成的AAD CallbackUrl是一个IP地址,在部署到服务结构时与应用程序注册中的回复Url不匹配,c#,azure,asp.net-core,azure-active-directory,azure-service-fabric,C#,Azure,Asp.net Core,Azure Active Directory,Azure Service Fabric,我正在使用Azure Active Directory和部署到Azure service fabric的ASP.NET Core 2.2 web app服务设置身份验证。我使用VisualStudio中的模板进行了设置,在本地部署时效果良好。然而,当我将其部署到azure时,我得到了“AADSTS50011:请求中指定的回复url与为应用程序配置的回复url不匹配”错误,并且我注意到在url中它将生成的重定向URI列为。如果我在我的应用程序注册中添加这个ip地址,它不会给我错误,但将我重定向到那

我正在使用Azure Active Directory和部署到Azure service fabric的ASP.NET Core 2.2 web app服务设置身份验证。我使用VisualStudio中的模板进行了设置,在本地部署时效果良好。然而,当我将其部署到azure时,我得到了“AADSTS50011:请求中指定的回复url与为应用程序配置的回复url不匹配”错误,并且我注意到在url中它将生成的重定向URI列为。如果我在我的应用程序注册中添加这个ip地址,它不会给我错误,但将我重定向到那个地址实际上不会带我去任何地方。我能做些什么来解决这个问题

我认为这可能是一些反向代理问题,我尝试了一些修复,试图给我一个集群上服务的绝对路径,例如:但是这些都不起作用

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

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

public void配置服务(IServiceCollection服务)
{
配置(选项=>
{
//此lambda确定给定请求是否需要非必要cookie的用户同意。
options.checkApprovered=context=>true;
options.MinimumSameSitePolicy=SameSiteMode.None;
});
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(选项=>BindAad(选项))
.AddCookie();
services.AddMvc(选项=>
{
var policy=new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()文件
.Build();
options.Filters.Add(新的授权过滤器(策略));
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
私有void BindAad(AzureADOptions选项)
{
options.Instance=settings.GetSetting(“AadInstance”);
options.Domain=settings.GetSetting(“AadDomain”);
options.TenantId=settings.GetSetting(“AadTenantId”);
options.ClientId=settings.GetSetting(“AadClientId”);
options.CallbackPath=新路径字符串(“/signin oidc”);
}
公共无效配置(IApplicationBuilder应用程序,IHostingEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
其他的
{
app.UseExceptionHandler(“/Home/Error”);
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseMvc(路由=>
{
routes.MapRoute(
名称:“默认”,
模板:“{controller=Home}/{action=Index}”);
});
}

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


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

您是否看到关于如何为aspnet核心配置openid connect的本演练?这种联系实际上没有帮助。我也面临同样的问题。问题是它选择的是kubernetes ip而不是DNS名称。