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