我的Web客户端应用程序根据用户角色具有不同的菜单,如读取,删除,添加,查看等。我在WSO2 API管理器中配置了不同的作用域,如读取,删除,添加等以及与它们相关的角色。当用户登录时,我通过WSO2 API管理器对用户进行身份验证并获取令牌。如何获取该令牌的所有有效范围,以便根据接收到的范围向用户显示不同的菜单?由于我有很多作用域,因此我希望有一些解决方案,而不是在身份验证时通过所有作用域?使用WSO2 API管理器时,根据角色来处理菜单/按钮可见性的最佳方法是什么。我应该为此使用角色或范围吗?如果是这样,我如何在我的客户端应用程序中获得所有作用域/角色?
您必须通过所有范围。然后令牌响应将返回与该令牌关联的作用域列表。
这是此博客文章中的一个很好的示例。
新闻API具有两个定义的范围,即“ news_read”和“ news_write”。“ news_read”作用域与用户角色“雇员”和“经理”相关联。“ news_write”作用域仅与“ manager”角色相关联。
该API有两个操作。一个作为/ read(GET),另一个作为/ write(POST)。GET操作与“ news_read”范围相关联,而POST操作与“ news_write”范围相关联。
有两个用户,分别名为“ nuwan”和“ john”。用户“ nuwan”具有“雇员”角色,“ john”具有“雇员”和“经理”角色。两个用户都要求两个范围的令牌。
a)用户“ nuwan”将通过/ token API请求令牌。他的要求将采用以下格式。
grant_type = password&username = nuwan&password = xxxx&scope = news_read news_write
尽管'nuwan'要求在两个作用域中都具有令牌,但由于'nuwan'不在'manager'角色中,因此仅会授予他带有'news_read'范围的令牌。请参阅/ token API的响应以获取上述请求。
{“作用域”:“新闻阅读”,“令牌类型”:“承载者”,“到期时间”:3299,“ refresh_token”:“ 8579facb65d1d3eba74a395a2e78dd6”,“ access_token”:“ eb51eff0b4d85cda1eb1d312c5b6}
b)用户“ john”现在将请求令牌,如下所示。
grant_type = password&username = john&password = john123&scope = news_read news_write
由于“约翰”既具有“雇员”角色又具有“经理”角色,因此他获得的令牌将同时具有所请求的作用域。请参阅/ token API的响应以获取上述请求。
{“作用域”:“新闻阅读新闻”,“令牌类型”:“承载者”,“ expires_in”:3299,“ refresh_token”:“ 4ca244fb321bd555bd3d555df39315”,“ access_token”:“ 42a377a0101877d1d9e29c29f5f30857”
这基本上意味着“ nuwan”只能访问API的GET操作,而“ john”可以访问两者。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句