Ошибка «Не найден publicKey для указанного ребенка» возникает при развертывании весенней загрузки в Tomcat - PullRequest
0 голосов
/ 30 января 2020

Я использую Keycloak для защиты моего остальных API

У меня есть 2 клиента в Keycloak:

-Мой интерфейс: React app

-Мой сервер : Spring boot (только для носителя)

Все работает правильно, когда я запускаю приложение весенней загрузки. Но я получил ошибку 401 «Не нашел publicKey для указанного ребенка», когда я запустил его в Tomcat. Ниже приведены некоторые настройки:

Keycloak. json

{
  "realm": "pet",
  "bearer-only": true,
  "auth-server-url": "http://localhost:8080/auth",
  "ssl-required": "none",
  "resource": "secure-api",
  "confidential-port": 0,
  "enable-cors" : true,
  "cors-max-age" : 1000,
  "cors-allowed-methods" : "POST, PUT, DELETE, GET",
  "cors-exposed-headers" : "WWW-Authenticate, My-custom-exposed-Header"
}

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>myapp</module-name>

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Authors</web-resource-name>
            <url-pattern>/management/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>user</role-name>
        </auth-constraint>
    </security-constraint>

    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>pet</realm-name>
    </login-config>

    <security-role>
        <role-name>admin</role-name>
    </security-role>
    <security-role>
        <role-name>user</role-name>
    </security-role>
</web-app>

context. xml

<Context path="/myapp">
    <Valve className="org.keycloak.adapters.tomcat.KeycloakAuthenticatorValve"/>
</Context>

keycloak-7.0 и tomcat-8

Есть идеи?

1 Ответ

1 голос
/ 31 января 2020

Наконец-то я нашел решение.

Помните, что ваш токен алгоритма подписи по умолчанию настроен в K C Панель администратора:

enter image description here

HS256 требуется опубликовать c ключ в http: // {domain}: 8080 / auth / realms / {realm-name} /.well-known/openid-configuration, к сожалению, как-то его там нет. А затем произошла ошибка «Не удалось найти publicKey для указанного ребенка»

К вашему сведению: RS256 против HS256: В чем разница?

Убедитесь, что publi c введите конечную точку метаданных OID C, если вы используете HS256

или , используя другой алгоритм

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...