Я расширяю менеджер хранилища пользователей ActiveDirectoryUserStoreManager
для WSO2AM 2.1.0, переопределяя метод protected String[] doGetExternalRoleListOfUser
для добавления ролей из внешней службы авторизации (роли используются для авторизации области).
Все выглядит локально, но в других средах (развернутых в kubernetes) при запросе токена (предоставление кода) я получил следующее исключение : ошибка при доступе к блоку привилегий 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
Проверка исходного кода Я вижу, что сделаны безопасные звонки (callSecure), что я не вижу непосредственной причины (хотя я предполагаю, что должно бытьиз соображений безопасности, если кто-то приложил столько усилий).
Появляется та же проблема при проверке токена (при вызове API, требующего области действия)
Поскольку он работает локально, я не могупредоставьте работающий тестируемый (повторяемый) случай, и как только он у меня появится, я обновлю вопрос.
Использование менеджера пользовательских хранилищ AD по умолчанию.Это не проблема, просто у нас нет внешних ролей, доступных для авторизации