2017-08-01 81 views
0

我使用WSO2IS作爲用於身份驗證和授權的OIDC提供程序。使用認證碼授權,我得到了訪問令牌。我需要授權用戶根據他們的角色訪問特定的服務。WSO2IS openid-connect:使用訪問令牌的訪問控制

我試圖使用XACML來解決這個問題,但是我發現我需要在REST API XACML請求的頭部中傳遞base64編碼的用戶名:密碼。相反,有什麼方法可以授權用戶使用訪問令牌來訪問基於角色的服務?

這部分授權發生在資源服務器中。我想我可以使用自省端點來使用範圍基於訪問令牌來授權用戶。但我不明白如何使用示波器爲用戶提供訪問控制?

回答

0

要獲取包含所有範圍的訪問令牌,OAuth2客戶端必須請求所關注的所有範圍,並且該令牌將僅包含用戶有權訪問的範圍。請參閱this question

是的,這很麻煩,但OAuth2主要是授權委託協議 - 它允許用戶將他們的一些權限(範圍)委託給客戶端。

或者,如果您可以根據角色決定權限,則可以從ID令牌獲取用戶角色列表。

+0

如何在WSO2IS中的id令牌中添加/映射用戶角色?現在我只需在id_token中獲取像at_hash,acr,sub,aud,azp,name,iss等字段。 –

+0

我不知道該怎麼做,角色(作爲聲明)不在OpenID Connect RFC範圍內,但可以由您的實施提供。如果訪問令牌允許的話,還有'userinfo'端點可以給你提供信息。 –

+0

通過帖子獲取用戶的範圍。但WSO2 API Manager是添加範圍的唯一方式嗎?我們不能僅僅使用WSO2 IS來做到這一點嗎?我的要求很簡單。每個用戶都有不同的權限,比如user1可以訪問service1,user2可以訪問service2。我只需要用戶/角色的權限就像鍵值對[User1:Service1],[User2:Service2]一樣簡單。它不需要訪問REST API。但是我發現在WSO2IS中,權限被映射到API端點,並且HTTP操作(如GET,POST和訪問控制)僅通過這些API發生。爲什麼這樣? –