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



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

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

要求是确定用户的角色、区域、公司以及他有权访问的资源列表。 因此,我在与"角色"同名上创建了一个资源,并限制该特定角色在策略服务器中的访问。例如:我创建了一个角色"Google:NA:Admin",并创建了一个策略来限制对角色"角色: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的方法,如果值与返回的特定"角色"资源匹配,那么我将捕获密钥(例如:CHN(作为区域和外部JSON元素的键作为"公司"。

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

对不起,长帖子。我尽力捕捉到完整的要求。 提前谢谢。

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

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

最新更新