Thorntail MP JWT / Undertow: требуется аутентификация - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь настроить JAX-RS-службу в виде thorntail с аутентификацией JWT.Все работает нормально (я могу ввести Principal и пользователь правильно настроен), за исключением того, что в случае неудачной аутентификации, ответ по-прежнему отправляется без 401-HTTP-заголовка.Я сделал следующее:

  • Добавил @LoginConfig(authMethod = "MP-JWT", realmName = "my-domain") в мой Application -класс
  • Настроил домен безопасности

    security:
      security-domains:
        my-domain:
          jaspi-authentication:
            login-module-stacks:
              roles-token-stack:
                login-modules:
                  jwt-jaspi-login-module:
                  code: org.wildfly.swarm.microprofile.jwtauth.deployment.auth.jaas.JWTLoginModule
                  flag: required
          auth-modules:
            http:
              code: org.wildfly.extension.undertow.security.jaspi.modules.HTTPSchemeServerAuthModule
              module: org.wildfly.extension.undertow
              flag: required
              login-module-stack-ref: roles-token-stack
    
  • Сконфигурированные JWT-специфичные вещи (кажется, работают, поэтому я пропускаю это здесь)

Что еще мне нужно сделать, чтобы это работало правильно?Нужно ли добавлять какие-либо аннотации к моей конечной точке?Как я уже сказал, я хочу вернуть 401 в случае неудачной аутентификации.

То, что я обнаружил до сих пор: JASPICAuthenticationMechanism.isMandatory должно возвращать true, чтобы это работало.В этом случае JWTAuthMechanism.sendChallenge запускается после сбоя JWTAuthMechanism.authenticate, и поэтому 401 отправляется клиенту.Но я понятия не имею, в каких случаях isMandatory возвращает true.

Спасибо за любую помощь в этом случае!

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Решение (спасибо Ladicek, см. Комментарии ниже):

Если вы хотите использовать MP JWT, не начинайте его с Swarm и не забудьте установить флаг useUberJar при запускеэто с thorntail:run.

0 голосов
/ 20 февраля 2019

Во-первых, конфигурация домена безопасности не на 100% правильная.Вот исправление для одной части YAML:

      roles-token-stack:
        login-modules:
        - login-module: jwt-jaspi-login-module
          code: org.wildfly.swarm.microprofile.jwtauth.deployment.auth.jaas.JWTLoginModule
          flag: required

Два, действительно, вам нужно использовать общие аннотации Java EE (@RolesAllowed, @DenyAll, @PermitAll) на ресурсах JAX-RS.

...