使用来自 IdentityServer4 的令牌访问受保护的 .net API

Accessing a protected .net API with a token from IdentityServer4

我有工作原型 Visual Studio 使用 IdentityServer4 的解决方案具有:

我正在与 API.

进行登录工作和 Web 客户端 1 的基本测试

我的问题最好用一个例子来描述: 假设我的 API 中有一个方法受 GetCourses 的 [Authorize] 属性保护(受授权保护,因此如果知道 URL 的任何人都无法访问它)。这目前有效,因为我的测试是用网络客户端 1 上的用户登录(最终将用于编辑课程)。

但是在面向 Public 的网站上,我希望能够在 IdentityServer 中使用 ClientCredentials 调用 GetCourses,这样我就可以在网站上显示课程列表。我希望我会以错误的方式解决这个问题,所以如果有人可以提供任何指示,我将不胜感激。

谢谢 理查德

假设您对 Web 客户端 1 使用 cookie 身份验证:

  // for Web Client 1  Scheme = Cookies
  app.UseCookieAuthentication();

  // for Web Client 2 Scheme = Bearer
  app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
  {
       ...
  });

您只需要像下面这样使用 ActiveAuthenticationSchemes

 [Authorize(ActiveAuthenticationSchemes = "Cookies, Bearer")]
 public IActionResult GetCourses(){ ... }

有关详细信息,请参阅 https://docs.asp.net/en/latest/security/authorization/limitingidentitybyscheme.html