使用 Java 解析和检索策略服务器响应的有效方法

Effective way to parse & retrieve Policy Server response using Java

我有一个策略服务器,我正在其中创建资源和角色。资源由基于角色定义的策略指导。对于前。假设我们有以下资源 button1, button2, Submit, table2 & Roles like Google:NA:Admin, Yahoo:CHN:Admin, Google:CHN:User、Alphabet:EU:Admin 等。用户将通过提供用户名和密码登录到 Policy Server 站点来注册角色。我正在从服务器获取每个用户的授权资源列表。对于用户名 "greenUser"(作为 POST 请求的一部分发送到 Policy Server API 的唯一参数),来自服务器的响应将类似于以下内容。

{"permit":[
  "button1",
  "table2",
  "Role:Google:NA:Admin",
  "Submit"
]
}

要求确定用户的角色、地区、公司以及他有权访问的资源列表。 因此,我创建了一个与 "Role" 同名的资源,并限制了该特定角色在 Policy Server 中的访问权限。例如:我创建了一个角色 "Google:NA:Admin" 并创建了一个策略来限制对角色 "Role:Google:NA:Admin" 的访问。目的是找到此资源作为响应的一部分,并确定用户拥有的角色。 一个用户有可能拥有多个角色。例如。他可以是 Google(北美地区)和 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) 作为 Region & 外部 JSON 元素的键作为 "Company".

我想看看是否有更好的方法来确定用户的角色、地区和公司。上面提到的JSON是我的想法。我很想听听除了 JSON 之外是否还有更好的设计或方法。示例代码片段表示赞赏。

抱歉这么久 post。我尽力捕捉完整的需求。 提前致谢。

如果策略服务器有一个 API 给定用户的 getRoles,我会使用它或创建一个(如果可能)。如果所有的门都关上了,添加角色作为资源将是我最后的计划。

不清楚哪个系统生成公司国家角色 JSON。它是策略服务器还是您的应用程序?如果它是策略服务器,我会 return policyNames 数组 (getRoles API)。如果您的应用程序要 return 这个 JSON 我会与应用程序服务的消费者讨论它并决定它是否符合他们的期望。如果没有消费者,我会 return 角色名称数组以保持简单