属性级别的访问控制(根据角色在api响应中隐藏/显示属性)

时间:2018-10-11 12:47:19

标签: spring-boot jhipster keycloak

我有一个使用JHipster生成的基于spring-boot的微服务。

我正在使用 keycloak 作为我的Auth Server。我可以在我的资源(API)上启用基于角色和基于范围的授权。

现在的要求是:根据客户端的角色,我需要限制要在响应中发送的信息(屏蔽属性或使它们无效)。 例如: 考虑使用以下API来获取此人的个人资料

/ api / person / {id}

{
  "name": {
    "firstName": "Jack",
    "lastName": "Sparrow"
  },
  "gender": "MALE",
  "emails": {
    "details": [
      {
        "emailId": "jack.sparrow@gmail.com"
      }
    ]
  },
  "phones": {
    "details": [
      {
        "phoneNumber": "1234567890",
        "countryCode": "+1"
      }
    ]
  },
  "addresses": {
    "details": [
      {
        "addressLine1": "aaaaaaaa",
        "addressLine2": "bbbbbbb",
        "city": "cccccc",
        "state": "ddddd",
        "country": "South Africa",
        "postalCode": "987654"
      }
    ]
  },
  "photo": "string",
  "nationality": "South Africa",
  "countryOfResidence": "string",
  "active": true,
  "createdAt": 1537431339569,
  "modifiedAt": 1537436600693,
  "createdBy": "admin",
  "modifiedBy": "admin"
}

现在,当具有 BASIC 角色的人员调用此API时,要求仅显示以下基本信息: -姓名,性别

如果他具有 INTERMEDIATE 的角色,那么我们可以发送的不仅是基本信息,还不是全部信息。例如:姓名,性别,照片,国籍

如果他具有 ADMIN 角色,那么我们可以发送完整的信息。

任何人都可以让我知道实现此目标的最佳方法是什么。

-预先感谢:)

0 个答案:

没有答案