1

我使用 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 可以识别主体,我是否需要在我的身份验证机制中创建它,以及如何?

4

1 回答 1

0

在这种情况下,听起来您的 EJB 部署尚未映射到 WildFly Elytron 安全域,因此仍在使用 EJB 层中的 PicketBox 安全性,这就是您没有看到已建立身份的原因。

在 EJB 子系统中,您还可以添加应用程序安全域映射以从部署中指定的安全域映射到 WildFly Elytron 安全域。

仅供参考,当我们准备好从服务器中删除 PicketBox 时,这些额外的映射将不再需要,不幸的是,它们目前是需要的,而我们同时拥有这两种解决方案。

于 2018-09-12T08:32:20.100 回答