我的Web客户端应用程序具有不同的菜单,如读取,删除,添加,查看等,具体取决于用户角色。 我有不同的范围,如读取,删除,添加等,以及在WSO2 API Manager中配置的相关角色。 当用户登录时,我通过WSO2 API Manager对用户进行身份验证并获取令牌。如何获取该令牌的所有有效范围,以便我可以根据收到的范围向用户显示不同的菜单? 由于我有很多范围,我希望除了在验证时传递所有范围之外还有其他解决方案吗? 在使用WSO2 API Manager时,根据角色处理菜单/按钮可见性的最佳方法是什么?我应该使用角色或范围吗?如果是这样,我如何获得客户端应用程序中的所有范围/角色?
答案 0 :(得分:1)
您必须通过所有范围。然后令牌响应将返回与该令牌关联的范围列表。
这是this blog post的一个很好的例子。
新闻API有两个定义的范围:'news_read'和'news_write'。该 'news_read'范围与用户角色'employee'和 '经理'。 'news_write'范围与'manager'角色相关联 只要。
API有两个操作。一个是/读(GET),另一个是/写 (POST)。 GET操作与'news_read'范围相关联 POST操作与'news_write'范围相关联。
有两个用户名为'nuwan'和'john'。用户'nuwan'有 '员工'角色和'约翰'既有'员工'又有'经理'角色。 两个用户都在为这两个范围请求令牌。
a)用户'nuwan'将通过/ token API请求令牌。他的 请求将采用以下格式。
grant_type =密码&安培;用户名= nuwan&安培;密码= XXXX&安培;范围= news_read news_write
虽然'nuwan'请求两个范围的令牌,但他只会 授予带有'news_read'范围的令牌,因为'nuwan'不在 '经理'角色。有关上述内容,请参阅/ token API的响应 请求。
{ “范围”: “news_read”, “token_type”: “承载”, “expires_in”:3299, “refresh_token”: “8579facb65d1d3eba74a395a2e78dd6” “ACCESS_TOKEN”: “eb51eff0b4d85cda1eb1d312c5b6a3b8”}
b)用户'john'现在将请求令牌,如下所示。
grant_type =密码&安培;用户名=约翰&安培;密码= john123&安培;范围= news_read news_write
由于'john'同时拥有'employee'和'manager'角色,因此令牌 他会得到两个要求的范围。查看来自的回复 / token API用于上述请求。
{“scope”:“news_read news_write”,“token_type”:“bearer”, “expires_in”:3299,“refresh_token”:“4ca244fb321bd555bd3d555df39315”, “ACCESS_TOKEN”: “42a377a0101877d1d9e29c5f30857e”}
这基本上意味着'nuwan'只能访问GET操作 “约翰”可以同时访问这两个API。