我正在研究Web API,目前我只想了解Swagger API在文档单元测试中的表现。我在网上找到了这个参考资料。你能帮助我如何保护Swagger API UI不被匿名用户或公共用户访问吗?仅指定给授权用户。
您可以添加一个全局身份验证过滤器,以便所有请求都能通过该过滤器。当您需要排除任何控制器时,可以使用[AllowAnonymous]
。
限制所有人,只排除需要的人,是该行业的最佳做法之一。
如果您使用的是ASP.Net Web Api
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new IdentityBasicAuthenticationAttribute());
// Other configuration code not shown...
}
你可以从微软文档的链接中阅读更多关于它的信息
如果您使用的是ASP.Net Core,您可能需要创建一个中间件。根据Asp.Net关于中间件的核心文档
中间件是一种组装到应用程序管道中以处理请求和响应的软件。每个组件:+选择是否将请求传递给管道中的下一个组件。可以在调用管道中的下一个组件之前和之后执行工作。
在中间件中,检查用户是否已通过身份验证,如果是,则继续执行next();
,如果未通过身份验证则发出Authentication.ChallengeAsync();
在管道中使用Authenticaion之后但使用Swagger之前添加中间件。
您可以在IIS中将SwaggerUI作为一个单独的实例进行托管,并通过IIS应用适当的授权策略。