В моем веб-клиентском приложении есть разные меню, такие как чтение, удаление, добавление, просмотр и т. Д. В зависимости от ролей пользователей. У меня есть разные возможности для чтения, удаления, добавления и т. Д. И связанных с ними ролей, которые настроены в WSO2 API Manager. , когда пользователь входит в систему, я аутентифицирую пользователя через диспетчер API WSO2 и получаю токен. Как я могу получить все допустимые области для этого токена, чтобы я мог показывать пользователю разные меню в зависимости от областей, которые я получил? Поскольку у меня много областей, я надеюсь иметь какое-то решение, кроме передачи всех областей при аутентификации? Каков наилучший подход к управлению видимостью меню/кнопки в зависимости от ролей при использовании диспетчера WSO2 API. Должен ли я использовать для этого роли или области? если да, то как я могу получить все области/роли в моем клиентском приложении?Как получить доступ ко всем областям, к которым пользователь имеет доступ в диспетчере API WSO2
ответ
Вы должны передать все области. Затем ответ маркера вернет список областей, связанных с этим токеном.
Вот хороший пример от this blog post.
API новостей имеет две определенные области, такие как «news_read» и «news_write». Область 'news_read' связана с ролями пользователя 'employee' и 'manager'. Область «news_write» связана только с ролью «менеджера» .
API имеет две операции. Один из них:/read (GET), а другой - как/запись (POST). Операция GET связана с областью «news_read», а операция POST связана с областью «news_write».
Есть два пользователя с именем «nuwan» и «john». Пользователь «nuwan» имеет роль « », а «john» имеет роли «сотрудник» и «менеджер». Оба пользователя запрашивают токен для обоих областей.
a) Пользователь «nuwan» будет запрашивать токен через API-интерфейс token. Его запрос будет иметь следующий формат.
grant_type = пароль & имя пользователя = nuwan & пароль = хххх & сфера = news_read news_write
Хотя 'nuwan' запрашивает маркер для обеих областей, он будет только предоставлен маркер, несущий 'news_read' сферы поскольку «nuwan» не находится в роли «менеджера». См. Ответ API/token для вышеуказанного запроса .
{ "Объем": "news_read", "token_type": "носителем", "expires_in": 3299, "refresh_token": "8579facb65d1d3eba74a395a2e78dd6", "access_token": "eb51eff0b4d85cda1eb1d312c5b6a3b8"}
б) Пользователь «john» теперь будет запрашивать токен, как показано ниже.
grant_type = пароль & имя пользователя = джон & пароль = john123 & сфера = news_read news_write
С «джон» имеет как «работник» и роль «менеджера», маркер он получает будет иметь как запрашиваемые области. См. Ответ от API /token для вышеуказанного запроса.
{ "Объем": "news_read news_write", "token_type": "носителем", "expires_in": 3299, "refresh_token": "4ca244fb321bd555bd3d555df39315", "access_token": "42a377a0101877d1d9e29c5f30857e"}
Это в основном означает, что «nuwan» может получить доступ только к операции GET API, а «john» может получить доступ к обоим.
Можем ли мы использовать конечную точку интроспекции для этого? – farasath
Я не думаю, что в этом случае знает о областях. Они обрабатываются самим APIM. – Bee