使用 IdentityServer4 保护 Web API 2.2

Protecting Web API 2.2 with IdentityServer4

我有 Web API 2.2,它使用 angular2 应用程序正在使用的 .Net 4.5.2 框架,并且存在现有的 IdentityServer4 实现。我想使用 IdentityServer4 保护我的 Web API。我的问题是我可以使用 IdentityServer4 保护 Web API 2.2 吗?如果是,那么我有两个跟进问题

  1. 我应该使用 IdentityServer3.AccessTokenValidation nuget 包还是必须使用 IdentityServer4.AccessTokenValidation? (我尝试使用 IdentityServer4.AccessTokenValidation 包但是它添加了许多与 ASP.Net Core 相关的依赖项)
  2. A​​uthority 的值应该是多少 URL 我将不得不使用?

我可以找到许多使用 IdentityServer4 来保护 ASP.Net 核心 Web API 的例子。但是找不到使用 IdentityServer4 保护 Web API 2.2 的好例子。如果可能的话,请指出 Web API 端所需的身份服务器配置的好例子。

回答您的问题:

1) 您的 WebApi 2.2 项目无疑使用了 ASP.NET 4.x 中的 OWIN/Katana,这意味着您应该使用 IdentityServer3.AccessTokenValidation。 IdentityServer4.AccessTokenValidation 与新的 ASP.NET MVC 核心管道兼容。

2) 您可以通过访问 {IdentityUrl}/.well-known/openid-configuration 上的身份提供者发现文档来获得您的授权。该权限应与发现文档中的 "issuer" 值相同。您还可以通过查看 "iss" 声明来查看您的身份提供者颁发的 JWT 来获得授权。

2017 年之后 IdentityServer3.AccessTokenValidation 在 Microsoft 重构其 Owin 和 Identity 库时保持冻结状态,因此 ASP.NET 4.6+ 的首选解决方案变为 IdentityServer3.Contrib.AccessTokenValidation -- 一个分支,根据最近的框架变化。