如何排除特定的控制器操作需要身份验证?

How do I exclude a specific controller action from needing authentication?

背景

我正在使用 Identity Server 3 向 API 添加自我检查,由 OAuth2 保护。我为此添加了一个 MonitoringController,检查集有限。

我想做的主要检查是确保可以使用固定的测试凭据请求令牌。

我们的监控系统可以定期调用此操作并确保可以请求令牌,这是比仅保持活动 ping(我们也有)更强大的检查。

不过

由于整个 API 都在进行身份验证,因此默认情况下 MonitoringController 也是如此。

这意味着我的令牌请求检查不被允许。必须首先请求令牌会破坏此检查的全部目的。

How can I exclude my MonitoringController from needing authentication, while making sure all other controllers are still checked?

您应该能够将 AllowAnonymous 属性放在控制器或方法上。

[AllowAnonymous]
public async Task<IHttpActionResult> DoSomeMonitoring()