使用OpenID进行AD身份验证的.NET核心Web应用程序出现问题。当前在我的应用程序设置中,CallBackPath设置为/signin-oidc
"Authentication": {
"AzureAd": {
"AADInstance": "microsoftonlinecom/",
"CallbackPath": "/signin-oidc"
并且在 azure 时,replyurl设置为azurewebsitescom/signin-oidc
每当我将replyurl更改为localhost:44320/signin-oidc并在本地调试时,它都可以正常运行,但是在Azure上会出现以下错误:
azurewebsitesnet/.auth/login/aad/callback'与为该应用程序配置的回复地址不匹配:'
因为您可以使用不正确的Replyurl告诉它,但我不确定为什么它不会使用在ReplyURL设置中明确设置的正确网址。
startup.cs:
app.UseCookieAuthentication();
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
ClientId = Configuration["Authentication:AzureAd:ClientId"],
Authority = Configuration["Authentication:AzureAd:AADInstance"] + Configuration["Authentication:AzureAd:TenantId"],
CallbackPath = Configuration["Authentication:AzureAd:CallbackPath"],
PostLogoutRedirectUri = Configuration["Authentication:AzureAd:PostLogoutURL"],
SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme
});
另外,如果我添加了通配符回复网址,例如exampleazurewebsitesnet/*然后我可以针对我的应用程序进行身份验证,除非它指出我没有访问权限,并且replyurl仍然是上面的错误URL:azurewebsitesnet/.auth/login/aad/callback
“您无权查看此目录或页面。”
由于我没有足够的权限在堆栈溢出中张贴两个以上的链接,因此我被迫故意输入错误的URL
最佳答案
基于重定向URL,似乎在将Web应用程序部署到Azure之后启用了Azure App服务提供的身份验证/授权功能。由于您已经在Web应用程序中实现了身份验证,因此无需对其进行配置。您可以通过新的Azure门户禁用它,如下图所示:
有关此功能的更多详细信息,可以引用here。