我使用 PasswordGuessEvidence 以及示例中提到的其他回调在https://github.com/wildfly-security-incubator/elytron-examples/tree/master/simple-http-mechanism中实现了类似于 CustomHeaderHttpAuthenticationMechanism 的身份验证机制。使用自定义机制的原因是,除了简单的凭证检查之外,我们还需要验证更多约束来检查用户是否被验证。
单步执行这个认证机制看起来还不错,authenticationComplete 方法被调用,并且 authorizeCallback 也成功了。但是,当通过 resteasy 端点访问 EJB(EJB 使用 @SecurityDomain 和 @RolesAllowed... 注释)时,SimpleSecurityManager.authorize 方法会失败,因为 securityContext.getUtil 方法既不提供主体也不提供其他东西。如果访问由@PermitAll 注释的方法,则成功。
我猜主体应该由 ServerAuthenticationContext 在处理不同的回调时创建,对吧?
我如何管理 SimpleSecurityManager 可以识别主体,我是否需要在我的身份验证机制中创建它,以及如何?