Эффективный способ анализа и получения ответа Policy Server с использованием Java
У меня есть сервер политики, на котором я создаю ресурсы и роли. Ресурсы руководствуются политиками, которые определяются на основе ролей. Например Предположим, у нас есть следующие ресурсы: button1, button2, Submit, table2 & Roles, такие как Google:NA:Admin, Yahoo:CHN:Admin, Google:CHN: Пользователь, Алфавит:EU:Admin и т. д. Пользователь будет зарегистрирован для роль, войдя на сайт Policy Server, указав имя пользователя и пароль. Я получаю список авторизованных ресурсов для каждого пользователя с сервера. Ответ от сервера будет выглядеть следующим образом для имени пользователя "greenUser" (единственный параметр, отправляемый как часть запроса POST к API-интерфейсу Policy Server).
{"permit":[ "button1", "table2", "Role:Google:NA:Admin", "Submit" ] }
Требуется определить роль пользователя, регион, компанию и список ресурсов, к которым он имеет доступ. Итак, я создал ресурс с тем же именем "Роль" и ограничил доступ в Policy Server для этой конкретной роли. Например: я создал роль "Google:NA:Admin" и создал политику, ограничивающую доступ только к роли "Роль: Google: NA: Admin". Намерение состоит в том, чтобы найти этот ресурс как часть ответа и определить роль, которую имеет пользователь. Существует вероятность того, что пользователь может иметь несколько ролей. например. Он может быть администратором Google (регион NA) и Alphabet (регион ЕС).
Определить регион и компанию по ролям. Я создал JSON, как показано ниже:
{ "Roles" : [{ "Google" : [{ "NA" : ["Role:Google:NA:Admin", "Role:Google:NA:User"]},{ "CHN" : ["Role:Google:CHN:Admin", "Role:Google:CHN:User"]} ] }, { "Alphabet" : [{ "NA" : ["Role:Alphabet:NA:Admin", "Role:Alphabet:NA:User"]},{ "CHN" : ["Role:Alphabet:CHN:Admin", "Role:Alphabet:CHN:User"]} ] } }
Я создал метод с использованием Java, который анализирует весь JSON и, если значение соответствует определенному возвращенному ресурсу "Role", я фиксирую ключ (например, CHN) в качестве региона и ключ внешнего элемента JSON как "Компания".
Я хочу проверить, есть ли лучший способ определить роль, регион и компанию пользователя. Вышеупомянутый JSON - моя идея. Я хотел бы услышать, есть ли лучший дизайн или подход, отличный от JSON. Пример кода фрагменты приветствуются.
Простите за длинный пост. Я старался изо всех сил, чтобы захватить полное требование. Заранее спасибо.
1 ответ
Если у сервера политики есть API для getRoles для данного пользователя, я бы использовал его или вместо него создал (если это возможно). Добавление ролей в качестве ресурса будет моим последним планом, если все двери закрыты.
Не ясно, какая система генерирует JSON компании-страны-роли. Это сервер политики или ваше приложение? Если это сервер политики, я бы возвратил массив policyNames (API getRoles). Если ваше приложение собирается вернуть этот JSON, я бы обсудил его с потребителем службы приложений и решил, соответствует ли оно их ожиданиям. Если нет потребителя, я бы просто возвратил массив имен ролей, чтобы было проще