У меня есть служба REST, работающая в Docker на Open Liberty. Вот файл Docker:
FROM open-liberty:kernel
COPY server.xml /config/
COPY jvm.options /config/
COPY tlscertificate.p12 /opt/ol/wlp/output/defaultServer/resources/security/
ADD aa-lookup-1.war /config/dropins/
server.xml:
<server description="AA Lookup">
<featureManager>
<feature>jaxrs-2.1</feature>
<feature>cdi-2.0</feature>
<feature>ejb-3.2</feature>
<feature>appSecurity-3.0</feature>
<feature>transportSecurity-1.0</feature>
</featureManager>
<keyStore id="defaultKeyStore" location="tlscertificate.p12" password="{xor}jsdjdksjdk=" type="PKCS12"/>
<basicRegistry id="basic" realm="BasicRealm">
<group name="aa-reader">
<member name="MyUser"></member>
</group>
<user password="{hash}DJKJDKLSJDJKDJSKLD7D7JJ" name="MyUser"></user>
</basicRegistry>
<webApplication id="aa-lookup" location="aa-lookup-1.war" name="aa-lookup" contextRoot="aa">
<application-bnd>
<security-role name="aa-reader">
<user name="MyUser" />
</security-role>
</application-bnd>
</webApplication>
</server>
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<security-constraint>
<web-resource-collection>
<web-resource-name>REST</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>aa-reader</role-name>
</auth-constraint>
</security-constraint>
</web-app>
В коде Java нет ничего связанного с аутентификацией, и базовая аутентификация работала нормально. Затем мой Docker был как-то поврежден, и я запустил новый экземпляр облака, перестроил и запустил там образ Docker.
Теперь имя пользователя и пароль больше не принимаются. На моем локальном компьютере я использую Open Liberty 18.0.0.2 с Eclipse, и там хорошо работает аутентификация Хранилище OpenLiberty больше не содержит эту версию. В Docker я пробовал с 18.0.0.4 и новее.
Я установил аутентификацию с нуля с помощью Инструкции IBM , но это не помогло. Когда я включил ведение журнала трассировки уровня FINE, я обнаружил, что ему нужна роль [aa-reader} -> return 401.
Как настроить простую базовую аутентификацию в последних версиях Open Liberty?