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



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

  • IdentityServer (asp.net core mvc)
  • API项目(asp.net core mvc)Web Client 1 (MVC/Angular)(用户名/密码保护的管理门户)与API对话
  • Web Client 2 (MVC)(面向公众的网站,无需登录)

我有登录工作和Web客户端1工作的基本测试与API交谈。

我的问题最好用一个例子来描述:假设我有一个方法在我的API与[授权]属性保护GetCourses(与授权保护,所以它不能被任何人访问,如果他们知道URL)。这目前的工作,因为我的测试是登录与用户在web客户端1(这将被用于编辑课程最终)。

但是在我的面向公众的网站上,我希望能够在IdentityServer中调用带有ClientCredentials的GetCourses,这样我就可以在网站上显示课程列表。我想我做这件事的方式是错误的,所以如果有人能提供任何指导,我将不胜感激。

谢谢理查德。

假设您对Web Client 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

相关内容

  • 没有找到相关文章

最新更新