【问题标题】:Spring Security OAUTH2 - How to restrict access to APIs based on client ID?Spring Security OAUTH2 - 如何根据客户端 ID 限制对 API 的访问?
【发布时间】:2021-05-18 08:38:45
【问题描述】:

您好,我是 Spring Security 的新手。 我有一个带有几个端点的控制器。这些端点来自资源服务器。

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

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

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

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

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

【问题讨论】:

    标签: spring-security oauth-2.0 oauth spring-security-oauth2


    【解决方案1】:
    1. 您可以配置授权服务器以将任何声明添加到令牌,您最终将需要正确授权请求。这可以是范围声明、client_id 声明或更细粒度的声明,例如 can_read_user_data: true

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

    1. 你可以看看这篇文章,了解如何在 Spring 中实现 JWT 声明的验证:https://curity.io/resources/tutorials/howtos/writing-apis/spring-boot-api/

    【讨论】:

    • 感谢您的链接。看起来很有用
    猜你喜欢
    • 2012-10-22
    • 2020-02-11
    • 2013-06-20
    • 2016-06-18
    • 1970-01-01
    • 2018-08-31
    • 2019-04-06
    • 2015-05-25
    • 2017-09-17
    相关资源
    最近更新 更多