Для выполнения пакетных операций с сервлетом, когда настроена проверка подлинности на основе ролей, вам необходимо добавить запрос проверки подлинности на сервлет, чтобы он работал под конкретным пользователем, а не с НЕОЖИДАНТИРОВАННЫЙ.
Вы могли бы добавить к этому образцу, как это:
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>
Теперь есть отдельный, но связанный с ним вопрос о том, как вы настроить пакетную безопасность, то есть, какие функции приносят пакетную безопасность в картину. Но я оставлю это для последующего вопроса и буду считать здесь само собой разумеющимся, что он присутствует.
Можете ли вы предоставить более подробную информацию, например. копию вашего server.xml, точные команды, которые вы выполняете, и соответствующие команды ошибок? Сам образец, как вы знаете, не включает в себя какую-либо автоматизацию maven, выполняющую какие-либо тесты или развертывание WAR для Liberty, поэтому я не могу точно сказать, что вы пытаетесь сделать. –
Опять же, я не знаю, как вы настраиваете безопасность, но если вы вносите изменения, вы можете попробовать удалить ** /resources/security/key.jks** и позволить регенерировать сервер при перезапуске. –