我在https://github.com/wildfly-security-incubator/elytron-examples/tree/master/simple-http-mechanism中使用PasswordGuessEvidence和示例中提到的其他回调实现了一个类似于CustomHeaderHttpAuthenticationMechanism的身份验证机制。自定义机制的原因是,除了简单的凭据检查之外,我们还需要验证更多的约束,以检查用户是否通过验证。
单步执行此身份验证机制看起来相当不错,调用了authenticationComplete方法,而且authorizeCallback也成功了。但是,当通过resteasy端点访问EJB时(EJB用@SecurityDomain和@RolesAllowed注释...)SimpleSecurityManager.authorize方法失败是因为securityContext.getUtil方法既没有提供主体,也没有提供其他东西。如果访问由@PermitAll注释的方法,则成功。
我猜主体应该是在处理不同的回调时由ServerAuthenticationContext创建的,对吧?
如何管理SimpleSecurityManager可以识别主体,是否需要在我的身份验证机制中创建主体,以及如何创建主体?
发布于 2018-09-12 16:32:20
在这种情况下,您的WildFly部署似乎还没有映射到Elytron安全域,因此仍在使用EJB层中的PicketBox安全性,这就是为什么您看不到身份已经建立的原因。
在EJB子系统中,您还可以添加一个应用程序-安全域映射,以从部署中指定的安全域映射到WildFly Elytron安全域。
仅供参考,在未来的某个时刻,当我们准备从服务器中删除PicketBox时,将不再需要这些额外的映射,不幸的是,目前需要它们,而我们同时拥有两种解决方案。
https://stackoverflow.com/questions/50743495
复制相似问题