客户端和用户使用Identity Server访问受保护的API

时间:2019-03-26 14:16:17

标签: asp.net-core identityserver4 asp.net-core-webapi oidc

我想知道我希望在我的项目中使用Identity Server的一个方面。

场景相对简单:

  • 我有一个API和几个客户端
  • 我想使用Identity Server和OIDC保护该API
  • 在一个客户端上,我正在研究具有可选身份验证的概念。
    • 某些功能需要某些声明,例如Admin
    • 剩余部分应允许匿名用户访问,但应仅允许来自注册客户端的请求
    • 这也应该反映在API上

这里需要说明的是,我仍然希望限制API仅由Identity Server中的注册客户端访问。

Identity Server中是否可能出现这种情况?

我知道我会在API上设置管理策略,但是我是否还必须设置一个CORS功能,或者Identity Server是否使用“允许的范围和资源配置”在框外做到这一点?

抱歉,如果解释不佳,我会尽快尝试添加图表

1 个答案:

答案 0 :(得分:1)

是的,如果您只希望将API访问限制为仅通过身份验证的请求,则一种方法是通过设置全局授权策略来进行作用域验证(请参见https://github.com/IdentityServer/IdentityServer4.AccessTokenValidation)。

您的管理员端点将检查其他声明。有多种方法可以执行此操作,一种方法是基于策略的授权(https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-2.2)。

您需要为API配置CORS中间件(请参见https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.2)。如果需要COR对Identity Server端点的访问权限,则需要配置Identity Server(请参见http://docs.identityserver.io/en/latest/topics/cors.html)。