繁体   English   中英

Spring 安全 OAUTH2 - 如何根据客户端 ID 限制对 API 的访问?

[英]Spring Security OAUTH2 - How to restrict access to APIs based on client ID?

嗨,我是 Spring 安全性的新手。 我有一个带有几个端点的 controller。 这些端点来自资源服务器。

POST /secured/user/create
POST /secured/user/update
GET /secured/user/{id}

在访问这些 API 之前,客户端必须从我的授权服务器获取一个令牌,然后在调用上述 API 时使用它。 但是,我想限制用户只能访问 GET api,具体取决于他的客户端 ID。 客户端应该无法调用创建或更新 API。

有没有办法做到这一点? 以及如何在代码中做到这一点? 我假设以下

  1. 必须在授权服务器的 JWT 令牌中添加一些内容。 我猜是 scope?
  2. 当资源服务器的 API 被命中时,它将验证令牌。 如果scope不允许API,那么服务器会返回HTTP 401 Unauthorized

任何资源或链接将不胜感激!

  1. 您可以配置授权服务器以向令牌添加任何声明,您最终将需要正确授权请求。 这可以是 scope 声明、client_id 声明或更精细的声明,例如can_read_user_data: true

您可以在此处找到的文章中阅读有关声明、范围、它们之间的关系以及围绕范围和声明的一些最佳实践: https://curity.io/resources/claims/

  1. 您可以查看这篇文章,了解如何在 Spring 中实现 JWT 声明的验证: https://curity.io/resources/tutorials/howto/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM