如何在WSO2 API管理器中获取用户有权访问的所有范围

时间:2017-01-01 14:45:47

标签: wso2 wso2is wso2-am wso2carbon

我的Web客户端应用程序具有不同的菜单,如读取,删除,添加,查看等,具体取决于用户角色。 我有不同的范围,如读取,删除,添加等,以及在WSO2 API Manager中配置的相关角色。 当用户登录时,我通过WSO2 API Manager对用户进行身份验证并获取令牌。如何获取该令牌的所有有效范围,以便我可以根据收到的范围向用户显示不同的菜单? 由于我有很多范围,我希望除了在验证时传递所有范围之外还有其他解决方案吗? 在使用WSO2 API Manager时,根据角色处理菜单/按钮可见性的最佳方法是什么?我应该使用角色或范围吗?如果是这样,我如何获得客户端应用程序中的所有范围/角色?

1 个答案:

答案 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。