首页 文章

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

提问于
浏览
1

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

1 回答

  • 1

    你必须通过所有范围 . 然后令牌响应将返回与该令牌关联的范围列表 .

    这是this blog post的一个很好的例子 .

    新闻API有两个定义的范围:'news_read'和'news_write' . 'news_read'范围与用户角色'employee'和'manager'相关联 . 'news_write'范围仅与'manager'角色相关联 . API有两个操作 . 一个是/读(GET),另一个是/写(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'为两个范围请求一个令牌,但他只会被授予一个带有'news_read'范围的令牌,因为'nuwan'不在'manager'角色 . 请参阅/ token API对上述请求的响应 . {“scope”:“news_read”,“token_type”:“bearer”,“expires_in”:3299,“refresh_token”:“8579facb65d1d3eba74a395a2e78dd6”,“access_token”:“eb51eff0b4d85cda1eb1d312c5b6a3b8”} b)用户'john'现在将请求令牌如下 . grant_type = password&username = john&password = john123&scope = 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'只能访问API的GET操作,而'john'可以访问它们 .

相关问题