java - 使用 Java 解析和检索 Policy Server 响应的有效方法
问题描述
我有一个策略服务器,我在其中创建资源和角色。资源由基于角色定义的策略指导。例如。假设我们有以下资源button1、button2、Submit、table2和角色,如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" ] }
要求是确定用户的角色、地区、公司和他有权访问的资源列表。因此,我在“角色”的同一名称上创建了一个资源,并限制了该特定角色在 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 的方法,如果该值与返回的特定“角色”资源匹配,那么我将捕获键(例如:CHN)作为区域和外部 JSON 元素的键为“公司”。
我想检查是否有更好的方法来确定用户的角色、地区和公司。上面提到的 JSON 是我的想法。我很想听听除 JSON 之外是否有更好的设计或方法。示例代码片段表示赞赏。
对不起,很长的帖子。我尽力捕捉完整的需求。提前致谢。
解决方案
如果策略服务器有一个 API 可以为给定的用户获取角色,我会使用它或创建一个(如果可能的话)。如果所有门都关闭,添加角色作为资源将是我的最后一个计划。
不清楚哪个系统生成 company-country-roles JSON。是策略服务器还是您的应用程序?如果是策略服务器,我将返回策略名称数组(getRoles API)。如果您的应用程序要返回此 JSON,我将与应用程序服务的使用者讨论它并确定它是否符合他们的期望。如果没有消费者,我只会返回角色名称数组以保持简单
推荐阅读
- c# - 将角色转向另一个方向左右移动不起作用
- excel - Powershell 实例化的 COM 对象随机使凭据失败
- python - Python3 / SQLAlchemy 1.4 / ORM / 创建表后引入新属性
- python - os listdir在使用jupyter notebook时找不到目录
- python - ValueError: 层 conv1d 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2。收到的完整形状:[64, 2000]
- javascript - 未捕获的 TypeError:knopkes.addEventListener 不是函数
- nlp - 一次从多个 PDF 文件中提取文本 Python
- python - ' '.join(context.args) 只接收字符串我怎样才能让它接收 int?
- python - 解析CSV时错误传递python列表字符串值
- javascript - 使用 react-router 创建“单页应用程序”会浪费服务器资源吗?