バッチ ロールベース認証が設定されているときにサーブレットからバッチ操作を実行するには、認証チャレンジをサーブレットに追加して、 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 {
これは、ユーザー レジストリとユーザーを定義し、参照したドキュメントのようにバッチ ロールへのアクセスを許可することに加えて、そのスニペットを次に示します。
<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>
ここで、バッチ セキュリティをどのように構成するか、つまり、どの機能がバッチ セキュリティに影響を与えるかについて、別の関連する質問があります。しかし、私はそれをフォローアップの質問に残し、ここではそれが存在することを当然のことと考えています.