Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.Net Core2:动态禁用安全性_Asp.net_Asp.net Core - Fatal编程技术网

ASP.Net Core2:动态禁用安全性

ASP.Net Core2:动态禁用安全性,asp.net,asp.net-core,Asp.net,Asp.net Core,我目前正在尝试做以下工作:我使用ASP.net core 2的默认安全性,因此使用带有策略的授权和JWT承载令牌的身份验证,这将检查Azure Active Directory。此外,我还希望将Authorize属性用于已定义的策略。也就是说,我希望能够动态地否决这种安全性,例如自动集成测试、本地开发等。 不幸的是,这似乎并不那么容易: 我不能简单地不调用.AddAuthentication和.AddAuthorization扩展名。如果我这样做,我会得到: InvalidOperationEx

我目前正在尝试做以下工作:我使用ASP.net core 2的默认安全性,因此使用带有策略的授权和JWT承载令牌的身份验证,这将检查Azure Active Directory。此外,我还希望将Authorize属性用于已定义的策略。也就是说,我希望能够动态地否决这种安全性,例如自动集成测试、本地开发等。 不幸的是,这似乎并不那么容易:

我不能简单地不调用.AddAuthentication和.AddAuthorization扩展名。如果我这样做,我会得到:

InvalidOperationException: No authenticationScheme was specified, and there was no DefaultChallengeScheme found.
我还尝试覆盖IAuthorizationService和AuthenticationHandler。我只需要通过依赖注入注入我的空实现。使用这个,各种奇怪的效果都发生了


从我所读到的内容来看,微软确实迫切建议不要覆盖这个类,甚至不要创建自定义的Authorize属性。相反,应该使用现有的框架。通常,我的主要目标是抽象出对Azure Active Directory的依赖关系。可能有更好的方法吗?

为什么不添加一个策略需求/句柄,它总是允许访问,并且只在集成测试期间添加?您已经可以
env.IsEnvironment(“集成测试”)(不要忘记将环境变量设置为它。)。调用
context.success(要求)时
在策略处理程序中,它将始终成功,请参阅,您可以使身份验证可配置,以便您可以跳过它或使用模拟身份验证处理程序,该处理程序将始终为您提供测试用户。请注意,如果集成测试跳过了应用程序不可分割的一部分(身份验证和授权),那么它将是一个糟糕的集成测试。