我正在尝试根据SAML2令牌中包含的自定义属性在登录时在WSO2 API Manager中设置用户权限级别(发布,创建,订阅等) . 不基于活动用户及其映射角色的列表 . 是否可以使用一组动态自定义属性自定义用户权限?
SAML令牌来自第三方源,但是如果需要,可以与WSO2 Identity Server集成 .
API Manager在底层运行Identity Server应用程序管理,以查找用户角色和权限 . 在 org.wso2.carbon.identity.application.mgt.ApplicationMgtUtil 中,只要应用程序需要检查用户的权限,就可以看到 isUserAuthorized 方法 .
org.wso2.carbon.identity.application.mgt.ApplicationMgtUtil
isUserAuthorized
/** * @param applicationName * @param username * @return * @throws IdentityApplicationManagementException */ public static boolean isUserAuthorized(String applicationName, String username) throws IdentityApplicationManagementException { String applicationRoleName = getAppRoleName(applicationName); try { if (log.isDebugEnabled()) { log.debug("Checking whether user has role : " + applicationRoleName + " by retrieving role list of " + "user : " + username); } String[] userRoles = CarbonContext.getThreadLocalCarbonContext().getUserRealm() .getUserStoreManager().getRoleListOfUser(username); for (String userRole : userRoles) { if (applicationRoleName.equals(userRole)) { return true; } } } catch (UserStoreException e) { throw new IdentityApplicationManagementException("Error while checking authorization for user: " + username + " for application: " + applicationName, e); } return false; }
你应该能够替换
String[] userRoles = CarbonContext.getThreadLocalCarbonContext().getUserRealm() .getUserStoreManager().getRoleListOfUser(username);
使用基于SAML2令牌中存在的属性检索角色的代码,但显然您必须构建并支持能够存储此类映射的结构 .
https://github.com/wso2/carbon-identity-framework/blob/master/components/application-mgt/org.wso2.carbon.identity.application.mgt/src/main/java/org/wso2/carbon/identity/application/mgt/ApplicationMgtUtil.java
1 回答
API Manager在底层运行Identity Server应用程序管理,以查找用户角色和权限 . 在
org.wso2.carbon.identity.application.mgt.ApplicationMgtUtil
中,只要应用程序需要检查用户的权限,就可以看到isUserAuthorized
方法 .你应该能够替换
使用基于SAML2令牌中存在的属性检索角色的代码,但显然您必须构建并支持能够存储此类映射的结构 .
https://github.com/wso2/carbon-identity-framework/blob/master/components/application-mgt/org.wso2.carbon.identity.application.mgt/src/main/java/org/wso2/carbon/identity/application/mgt/ApplicationMgtUtil.java