我正在使用ASP.NET Core 2.2和Razor Pages创建一个新的WebApp,我想使用AzureAD对用户进行身份验证。这可以在本地使用localhost正常工作,并且我可以顺利登录和注销。但是,当我将其发布到Azure时,我无法登录。在Microsoft登录页面后,我重定向到WebApp到页面“ /.auth/login/done”,该页面显示:“您已成功登录。网站”,我可以返回我的网站,但我尚未登录。
在Azure的应用程序注册中,我已经为本地主机和应用程序配置了重定向Urls。对于本地主机,它看起来像“ https://localhost:44321/.auth/login/aad/callback”,对于应用程序来说,它看起来像“ https://maywebapp.azurewebsites.net/.auth/login/aad/callback”。 我将应用程序配置为始终使用https来确保Url与Azure中配置的URL相同。
这是我的服务配置:
services.AddAuthentication(options =>
{
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddOpenIdConnect(options =>
{
options.Authority = Configuration["Microsoft:Authority"];
options.ClientId = Configuration["Microsoft:ClientId"];
options.CallbackPath = Configuration["Microsoft:CallbackPath"];
options.ResponseType = OpenIdConnectResponseType.IdToken;
options.SignedOutRedirectUri = Configuration["Microsoft:SignedOutRedirectUri"];
options.TokenValidationParameters.NameClaimType = "name";
})
.AddCookie();
我希望与在本地运行可运行的应用程序时具有相同的行为。
答案 0 :(得分:0)
要验证对此文件夹中页面的所有访问,可以向所有页面模型类添加Authorize
属性,但我们可以做得更好。回到Startup类,我们可以添加一些Razor Pages约定以使我们的生活更轻松。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizeFolder("/Account");
});
...
}
这是article关于使用asp.net剃须刀进行身份验证。