Защищенный ключом сервис WildFly REST возвращает 401 несанкционированный - PullRequest
0 голосов
/ 05 сентября 2018

Я использую сервер приложений WildFly, на котором размещена простая комбинация Frontend-Backend на моей локальной машине. Frontend защищен через адаптер Keycloak JS, а в Backend используется адаптер Keycloak WildFly.

У меня правильно установлен keycloak.json (в папке WEB-INF), и мой web.xml выглядит так:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     version="3.0">

    <module-name>restservice</module-name>
    <display-name>RESTful Service</display-name>

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Brokerservice</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>default</role-name>
        </auth-constraint>
    </security-constraint>

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>AuthInterface</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
    </security-constraint>

    <login-config>
        <auth-method>KEYCLOAK</auth-method>
        <realm-name>this is ignored currently</realm-name>
    </login-config>

    <security-role>
        <role-name>default</role-name>
    </security-role>
</web-app>

Развертывание проходит гладко, и я могу получить доступ и войти в Frontend, размещенный в этом развертывании, но когда я пытаюсь запросить что-то из моего Backend, мне возвращается 401 Unauthorized. Токен на предъявителя действителен и отправлен в службу в соответствии с указаниями документов Keycloak. Между тем, консоль читает

Error when sending request to retrieve realm keys: org.keycloak.adapters.HttpClientAdapterException: IO error

Полный журнал сервера доступен здесь . Поскольку эта проблема возникает только с моей локальной службой REST (я могу подключаться и извлекать данные из других служб, защищенных Keycloak в сети моей компании), я подозреваю, что это проблема с моей конфигурацией WildFly. В настоящее время это чистая установка с добавлением и включением только адаптера Keycloak через командную строку.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 05 сентября 2018

Друзья мои, я нашел решение! У меня действительно была локальная проблема конфигурации, но не в WildFly, а в моем Java Keystore. Корпоративный сертификат SSL необходимо добавить в хранилище ключей cacerts, которое является частью дистрибутива Java, связанного с переменной JAVA_HOME (в моем случае, jdk1.8.0_181). В частности, вы можете использовать эту команду для установки:

keytool -import -keystore "C:\Program Files\Java\jdk1.8.0_181\jre\lib\security\cacerts" -alias [alias] -storepass [password] -file [path/to/your/certificate]

Обратите внимание, что если "keytool" не может быть найден, перейдите в корзину JDK и выполните команду оттуда. Источник выполнения здесь не действует.

...