wso2am - 扩展userstoremanager - 访问Java Security Manager权限块时出错

时间:2018-06-11 13:12:14

标签: wso2 wso2-am

我正在为WSO2AM 2.1.0扩展用户话务管理器ActiveDirectoryUserStoreManager,覆盖protected String[] doGetExternalRoleListOfUser方法以从外部授权服务添加角色(角色用于范围授权)。

所有看起来都在本地工作,但在其他环境中(部署在kubernetes上)请求令牌(代码授予)时我得到following exception:访问Java Security Manager权限块时出错

(其他授权类型没有问题)

Error occurred while issuing the access token for Client ID : ddSiloINsMx5fwp08FqqF62hcaaa, User ID null, Scope : [] and Grant Type : authorization_code    More
ERROR {org.wso2.carbon.identity.oauth2.OAuth2Service} - Error occurred while issuing the access token for Client ID : ddSiloINsMx5fwp08FqqF62hcaaa, User ID null, Scope : [] and Grant Type : authorization_code 
java.util.AbstractCollection.addAll(AbstractCollection.java:343) 
org.wso2.carbon.apimgt.keymgt.ScopesIssuer.setScopes(ScopesIssuer.java:110)
org.wso2.carbon.apimgt.keymgt.handlers.ExtendedAuthorizationCodeGrantHandler.validateScope(ExtendedAuthorizationCodeGrantHandler.java:48)
org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer.issue(AccessTokenIssuer.java:242) 
...
ERROR {org.wso2.carbon.apimgt.keymgt.issuers.RoleBasedScopesIssuer} - Error when getting the tenant's UserStoreManager or when getting roles of user 
org.wso2.carbon.user.core.common.AbstractUserStoreManager.callSecure(AbstractUserStoreManager.java:177) 
org.wso2.carbon.user.core.common.AbstractUserStoreManager.getRoleListOfUser(AbstractUserStoreManager.java:2586) 
org.wso2.carbon.apimgt.keymgt.issuers.RoleBasedScopesIssuer.getScopes(RoleBasedScopesIssuer.java:118) 
org.wso2.carbon.apimgt.keymgt.ScopesIssuer.setScopes(ScopesIssuer.java:109) 
...
ERROR {org.wso2.carbon.user.core.common.AbstractUserStoreManager} - Error occurred while accessing Java Security Manager Privilege Block

检查source code我看到有安全呼叫(callSecure),我没有看到直接原因(虽然我认为如果有人付出了太多努力,必须有安全理由)。

在验证令牌(调用需要范围的API)时会弹出相同的问题

由于它在本地工作,我无法提供可行的可测试(可重复)案例,我很快就会更新问题。

使用默认的AD用户管理器没有任何问题,只是我们没有可用于授权的外部角色

1 个答案:

答案 0 :(得分:0)

wso2carbon.log中有另一个日志条目(虽然不在控制台中 - 通过碳控制台提供日志)

Caused by: java.lang.NullPointerException
    at org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager.getLDAPRoleListOfUser(ReadOnlyLDAPUserStoreManager.java:1928)
    at org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager.doGetExternalRoleListOfUser(ReadOnlyLDAPUserStoreManager.java:2041)
    at com.rd.poa.auth.roleuserstore.ExtRoleUserstore.doGetExternalRoleListOfUser(ExtRoleUserstore.java:162)
    at org.wso2.carbon.user.core.common.AbstractUserStoreManager.doGetRoleListOfUser(AbstractUserStoreManager.java:3730)
    at org.wso2.carbon.user.core.common.AbstractUserStoreManager.getRoleListOfUser(AbstractUserStoreManager.java:2615) 

用户似乎是" GroupSearch"以外的群组成员。过滤。使包含所有LDAP组的组搜索基础似乎有所帮助(到目前为止)

另一个必要的操作是从用户名WSO2AM2.1.0-update12 scope roles for federated users

中删除FEDERATED