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

问题描述 投票:0回答:1

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

场景相对简单:

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

需要注意的是,我仍然希望限制API只能由Identity Server中的注册客户端访问

这种情况在Identity Server中是否可行?

我知道我会在API上设置管理员策略,但我是否也必须设置CORS功能,或者Identity Server是否使用允许的范围和资源配置执行此操作?

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

asp.net-core identityserver4 asp.net-core-webapi oidc
1个回答
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)。如果您需要CORC访问Identity Server端点,则需要配置Identity Server(请参阅http://docs.identityserver.io/en/latest/topics/cors.html)。

© www.soinside.com 2019 - 2024. All rights reserved.