Невозможно вызвать пакет Maven Java с помощью службы отдыха, развернутой на свободе

https://github.com/WASdev/sample.batch.sleepybatchlet

Я пытаюсь запустить приведенный выше пример git. Я смог настроить и запустить пакетный Java-проект Ant build в свободе. но когда дело дошло до проекта maven, я не смог использовать службу rest для управления заданиями. У меня проблемы с аутентификацией пользователей при использовании defaultKeyStore. я заметил, что в вышеупомянутом проекте maven был server.xml, но я не смог создать пароль хранилища ключей. он говорит, что "свобода исполнения не может быть найдена".

в liberty server.xml я использовал одного пользователя в basicRegistry и security-role как "batchadmin" для того же пользователя

какие изменения должны быть внесены в server.xml внутри проекта, чтобы пройти проверку подлинности сервера.

1 ответ

Чтобы выполнить пакетные операции с сервлетом, когда настроена пакетная проверка подлинности на основе ролей, необходимо добавить запрос проверки подлинности к сервлету, чтобы он выполнялся под определенным пользователем, а не как НЕАУТЕНТИЧНЫЙ.

Вы можете добавить это к образцу следующим образом:

import javax.servlet.annotation.HttpConstraint;
import javax.servlet.annotation.HttpMethodConstraint;
import javax.servlet.annotation.ServletSecurity;
import javax.servlet.annotation.WebServlet;

// ...
@ServletSecurity(value = @HttpConstraint(transportGuarantee = ServletSecurity.TransportGuarantee.CONFIDENTIAL),
    httpMethodConstraints = { @HttpMethodConstraint(value = "POST", emptyRoleSemantic = ServletSecurity.EmptyRoleSemantic.PERMIT),
                              @HttpMethodConstraint(value = "GET", emptyRoleSemantic = ServletSecurity.EmptyRoleSemantic.PERMIT),
                              @HttpMethodConstraint(value = "PUT", emptyRoleSemantic = ServletSecurity.EmptyRoleSemantic.PERMIT) })
@WebServlet(urlPatterns = { "/joboperator" })
public class JobOperatorServlet extends HttpServlet {

Это в дополнение к определению реестра пользователей и пользователей и предоставлению им доступа к пакетным ролям, как в документе, на который вы ссылались, и вот фрагмент этого:

<httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>

<keyStore id="defaultKeyStore" password="Liberty"/>

<basicRegistry id="basic" realm="ibm/api">
    <user name="bob" password="bobpwd"/>
    <user name="jane" password="janepwd"/>
</basicRegistry>

<authorization-roles id="com.ibm.ws.batch">
    <security-role name="batchSubmitter">
        <user name="bob"/>
    </security-role>
    <security-role name="batchAdmin">
        <user name="jane"/>
    </security-role>
</authorization-roles>

Теперь есть отдельный, но связанный с этим вопрос о том, как настроить пакетную безопасность, то есть какие функции обеспечивают пакетную безопасность. Но я оставлю это для последующего вопроса и приму как должное, что он присутствует.

Другие вопросы по тегам