我正在为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用户管理器没有任何问题,只是我们没有可用于授权的外部角色
答案 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
域