Я заполнил свой API для отдыха с помощью Keycloak.После аутентификации, когда я пытаюсь получить доступ к остальному API, я получаю:
403 ошибка.Невозможно получить доступ к остальным API.Причина! Role.
В конфигурации я указал роль как *:
ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler(); context.setSecurityHandler(securityHandler); securityHandler.addRole("*"); ConstraintMapping constraintMapping = new ConstraintMapping(); constraintMapping.setPathSpec("/*"); Constraint constraint = new Constraint(); constraint.setAuthenticate(true); constraint.setRoles(new String[]{"*"});
Было ли мое предположение об указании какой-либо роли с помощью '*' неправильноили ошибка означает что-то другое?
Я вижу следующие журналы в журналах JettyKeycloakAuthentciator:
2018-05-24 12: 55: 52,253 [DEBUG] [ers.PreAuthActionsHandler (handleRequest))] - adminRequest http://localhost:7100/api/v1/design/test 2018-05-24 12: 55: 52,254 [DEBUG] [TokenRequestAuthenticator (thenticateToken)] - Проверка access_token 2018-05-24 12: 55: 52,255 [DEBUG] [TokenRequestAuthenticator (thenticateToken)] - успешно авторизовано. 2018-05-24 12: 55: 52,255 [DEBUG] [JettyRequestAuthenticator (rAuthentication)] - Завершение аутентификации канала-носителя.Роли носителя: [uma_authorization] 2018-05-24 12: 55: 52,255 [DEBUG] [ters.RequestAuthenticator (eAuthentication)] - Пользователь '8f9381df-2f7e-4ff8-9ef5-2123b03db3c9' вызывая 'http://localhost:7100/api/v1/design/test' на клиенте'my_server' 2018-05-24 12: 55: 52,255 [ОТЛАДКА] [ters.RequestAuthenticator (аутентифицировать)] - на предъявителяhttp://localhost:7100/api/v1/design/test
Оказывается, правильный способ задания любой роли:
constraint.setRoles(new String[]{"**"});
т.е. double *, а не single *
Кроме того,Я удалил эту строку:
securityHandler.addRole("*");