Um Batch-Operationen von einem Servlet, wenn Batch rollenbasierte Authentifizierung konfiguriert auszuführen, müssen Sie eine Authentifizierungsanfrage an das Servlet hinzufügen, so dass es unter einem bestimmten Benutzer ausgeführt wird, statt UNAUTHENTICATED.
Man könnte dies so zu der Probe hinzu:
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 {
dass zusätzlich ist die Benutzer-Registry zu definieren, und die Benutzer, und ihnen den Zugang zu den Batch-Rollen wie in dem Dokument, das Sie verwiesen und hier Gewährung ist ein Ausschnitt davon:
<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>
Jetzt gibt es eine separate, aber miteinander verbundene Frage, wie konfigurieren Sie Batch-Sicherheit, das heißt, die Sicherheit in das Bild bringen Batch-Funktionen. Aber ich lasse das für eine Anschlussfrage und nehme es als selbstverständlich an, dass es da ist.
Können Sie weitere Details angeben, z. eine Kopie Ihrer server.xml, die genauen Befehle, die Sie ausführen, und die entsprechenden Fehlerbefehle? Das Sample selbst, wie Sie wissen, enthält keine Maven-Automatisierung, die Tests ausführt oder die WAR an Liberty verteilt, so dass ich nicht genau sagen kann, was Sie zu tun versuchen. –
Noch einmal, ich weiß nicht, wie Sie die Sicherheit konfigurieren, aber wenn Sie Änderungen vorgenommen haben, versuchen Sie vielleicht, ** /resources/security/key.jks** zu löschen und den Server beim Neustart neu generieren zu lassen. –