Asp.net Core 3.1 MVC-在开发环境中禁用身份验证

时间:2020-10-31 08:15:16

标签: asp.net-core azure-active-directory

我们已将代码与Azure AD集成在一起以进行身份​​验证。根据我们的Azure AD策略,我们甚至需要通过MFA进行身份验证。因此,在开发过程中,我们需要输入密码以及非常令人沮丧的MFA。

是否可以在不删除[Authorize]标签的情况下禁用开发中的身份验证,还是可以添加虚拟主体对象?

这是我们在Startup类的ConfigureServices中的代码的屏幕截图

enter image description here

我看过几篇文章,但没有一个选项对我们有用。

请帮助我们。在此先感谢

1 个答案:

答案 0 :(得分:0)

在.net core 3.1中,如果环境类型为 Development ,则可以添加自定义IAuthorizationHander来有条件地绕过身份验证。

answer中的示例:

/// <summary>
/// This authorisation handler will bypass all requirements
/// </summary>
public class AllowAnonymous : IAuthorizationHandler
{
    public Task HandleAsync(AuthorizationHandlerContext context)
    {
        foreach (IAuthorizationRequirement requirement in context.PendingRequirements.ToList())
            context.Succeed(requirement); //Simply pass all requirements

        return Task.CompletedTask;
    }
}

然后有条件地在Startup.ConfigureServices中注册此处理程序。

private readonly IWebHostEnvironment _env;
public Startup(IWebHostEnvironment env)
{
    _env = env;
}

public void ConfigureServices(IServiceCollection services)
{
  {...}

  //Allows auth to be bypassed
  if (_env.IsDevelopment())
    services.AddSingleton<IAuthorizationHandler, AllowAnonymous>();
}