我们已将代码与Azure AD集成在一起以进行身份验证。根据我们的Azure AD策略,我们甚至需要通过MFA进行身份验证。因此,在开发过程中,我们需要输入密码以及非常令人沮丧的MFA。
是否可以在不删除[Authorize]标签的情况下禁用开发中的身份验证,还是可以添加虚拟主体对象?
这是我们在Startup类的ConfigureServices中的代码的屏幕截图
我看过几篇文章,但没有一个选项对我们有用。
请帮助我们。在此先感谢
答案 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>();
}