gpt4 book ai didi

java - 客户端无权调用此 JAX-RS EJB 错误

转载 作者:行者123 更新时间:2023-12-02 07:48:57 26 4
gpt4 key购买 nike

我一直在寻找解决方案,这里是......

我按照本教程从数据库自动生成 jax-rs Web 服务:https://netbeans.org/kb/docs/websvc/rest.html

这很好用,但是当我尝试通过使用 @RolesAllowed("myRole") 注释资源方法来保护应用程序时,我收到此异常...

“警告:EJB5184:调用 EJB LicenceFacadeREST 期间发生系统异常,方法:public java.util.List resources.LicenceFacadeREST.findAll()警告:javax.ejb.AccessLocalException:客户端未获得此调用的授权”

我已将范围缩小到 EJB JACC 策略检查失败。当我不在资源类中使用 EJB/JPA 时,即使存在 @RolesAllowed 注释,也不会引发异常。

可以在此处找到完整的 glassfish 堆栈跟踪(小字体)http://pastebin.com/AUPKWaqe

最佳答案

这里有一些额外信息,我遵循了下面的 Jersey 安全指南。 https://jersey.java.net/documentation/latest/security.html#d0e10816

我使用 ContainerRequestFilter 进行身份验证,如果身份验证成功,我将在此处设置 SecurityContext 的自定义实现,rolesalloweddynamic 功能将与 Rolesallowed 注释一起使用来授权对特定资源的访问。这三个组件允许我在应用程序级别而不是容器级别进行身份验证和授权。

在我的应用程序从 servlet 转换为 EJB/servlet(我向 jax-rs 资源类添加了无状态 ejb 注释)之前,这种方法一直运行良好。 EJB 使用 Rolesallowed 注释在容器级别限制对其 bean 方法的访问,因此它与我的应用程序级别身份验证/授权发生冲突。

我仍在寻找一个全面的解决方案,即使它禁用了 EJB 级别的方法安全性,这样我就可以将其留给 ContainerRequestFilter 进行身份验证并由 Rolesalloweddynamicfeature 进行授权。

关于java - 客户端无权调用此 JAX-RS EJB 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22585065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com