Контроль доступа на уровне свойств (скрытие / отображение свойств в ответе API на основе роли) - PullRequest
0 голосов
/ 11 октября 2018

У меня есть микросервис на основе весенней загрузки, созданный с помощью JHipster.

Я использую keycloak в качестве моего сервера аутентификации.Я мог бы включить авторизацию на основе ролей и области действия для своих ресурсов (apis).

Теперь требуется следующее: исходя из роли клиента, мне нужно ограничить информацию, отправляемую в ответе (либо замаскировать атрибуты, либо аннулировать их).Например: рассмотрите следующие 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, требование состоит в том, чтобы показывать только основную информацию, такую ​​как: - имя, пол

Если у него есть роль ПРОМЕЖУТОЧНАЯ , тогда мы можем отправить что-то более простое, но не полноеИнформация.Например: имя, пол, фотография, национальность

Если он имеет роль ADMIN , мы можем отправить полную информацию.

Может кто-нибудь, пожалуйста, дайте мне знать, каков наилучший подход для достижения этой цели.

- Заранее спасибо:)

...