我有一个策略服务器,我在其中创建资源和角色。资源由基于角色定义的策略指导。例如。假设我们有以下资源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 之外是否有更好的设计或方法。示例代码片段表示赞赏。
对不起,很长的帖子。我尽力捕捉完整的需求。提前致谢。