使用来自 IdentityServer4 的令牌访问受保护的 .net API
Accessing a protected .net API with a token from IdentityServer4
我有工作原型 Visual Studio 使用 IdentityServer4 的解决方案具有:
- IdentityServer(asp.net 核心 mvc)
- API 项目(asp.net 核心 mvc)
- Web 客户端 1 (MVC/Angular)(Username/password 受保护的管理门户)与 API
交谈
- Web 客户端 2 (MVC)(Public 面向网站,无需登录)
我正在与 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
我有工作原型 Visual Studio 使用 IdentityServer4 的解决方案具有:
- IdentityServer(asp.net 核心 mvc)
- API 项目(asp.net 核心 mvc)
- Web 客户端 1 (MVC/Angular)(Username/password 受保护的管理门户)与 API 交谈
- Web 客户端 2 (MVC)(Public 面向网站,无需登录)
我正在与 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