2017-01-01 22 views
1

根據用戶角色,我的Web客戶端應用程序具有不同的菜單,如讀取,刪除,添加,查看等。 我有不同的範圍作爲讀取,刪除,添加等,並與他們在WSO2 API管理器中配置相關的角色。 當用戶登錄時,我通過WSO2 API Manager對用戶進行身份驗證並獲取令牌。如何獲取該令牌的所有有效範圍,以便我可以根據收到的範圍向用戶顯示不同的菜單? 由於我有很多範圍,我希望有一些解決方案,而不是通過所有的範圍,而認證? 當使用WSO2 API Manager時,根據角色處理菜單/按鈕可見性的最佳方法是什麼?我應該使用角色或範圍來做到這一點?如果是這樣,我如何獲得我的客戶端應用程序中的所有範圍/角色?如何獲取用戶在WSO2 API管理器中訪問的所有範圍

回答

1

您必須通過所有範圍。然後,令牌響應將返回與該令牌關聯的範圍列表。

下面是從this blog post一個很好的例子。

新聞API有兩個定義的範圍'news_read'和'news_write'。 'news_read'範圍與用戶角色'employee'和 'manager'關聯。 'news_write'範圍僅與'管理員'角色 相關聯。

該API有兩個操作。一個爲/讀(GET),另一個爲/寫 (POST)。 GET操作與'news_read'範圍相關聯,並且POST操作與'news_write'範圍相關聯。

有兩個用戶名爲'nuwan'和'john'。用戶'nuwan'具有 '員工'角色,'約翰'具有'員工'和'經理'角色。 兩個用戶都在爲這兩個範圍請求一個令牌。

a)用戶 'nuwan' 將通過/令牌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 )用戶'約翰'現在將要求一個令牌如下。

grant_type =密碼&用戶名=約翰&密碼= john123 &範圍= news_read news_write

自「約翰」同時具有「員工」和「經理」的角色,令牌 牽起將承擔兩請求的範圍。請參閱 /令牌API對上述請求的回覆。

{ 「範圍」: 「news_read news_write」, 「token_type」: 「承載」, 「expires_in」:3299, 「refresh_token」: 「4ca244fb321bd555bd3d555df39315」, 「的access_token」: 「42a377a0101877d1d9e29c5f30857e」}

這基本上意味着'nuwan'只能訪問API的GET操作 ,而'john'可以訪問兩者。

+0

我們不能使用令牌自檢端點嗎? – farasath

+0

我不認爲IS在這種情況下知道範圍。它們由APIM本身處理。 – Bee

相關問題