爲了在配置批處理基於角色的認證時從servlet執行批處理操作,您需要向servlet添加認證挑戰,以便它在特定用戶下運行,而不是UNAUTHENTICATED。
你可以像這樣的內容添加到該示例:
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 {
那如DOC你引用的是除了定義用戶註冊表和用戶,並授予他們訪問批次的角色,並在這裏是的,一個片段:
<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的副本,您正在執行的確切命令以及相應的錯誤命令?您所知的示例本身不包含執行任何測試或將WAR部署到Liberty的任何Maven自動化,因此我無法確切知道您正在嘗試執行什麼操作。 –
同樣,我不知道您是如何配置安全性的,但如果您一直在進行更改,您可能會嘗試刪除** /resources/security/key.jks**,並讓服務器在重新啓動時重新生成。 –