Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在哪里可以定义遵循角色的用户?_Java_Jersey - Fatal编程技术网

Java 在哪里可以定义遵循角色的用户?

Java 在哪里可以定义遵循角色的用户?,java,jersey,Java,Jersey,我正在使用示例16.5和16.6中定义的RoleSalowedDynamicFeature 我登记为: @ApplicationPath("/demo") public class App extends ResourceConfig { public App() { this.packages("com.bla bla bla package"); register(RolesAllowedDynamicFeature.class); } }

我正在使用示例16.5和16.6中定义的RoleSalowedDynamicFeature

我登记为:

@ApplicationPath("/demo")
public class App extends ResourceConfig {
    public App() {
        this.packages("com.bla bla bla package");
        register(RolesAllowedDynamicFeature.class);
    }
}
然后在Java类中,我执行以下操作:

@Path("request")
@RolesAllowed({ "admin", "thirdPartyDeveloper" })
public class DemoService {
}
我的问题是,在哪里陈述属于管理员角色的用户和属于第三方开发人员角色的用户


我可以在哪里设置他们的凭据?

这取决于您的身份验证机制的外观

JavaEE安全 如果您依赖servlet容器提供的标准Java EE Web应用程序安全机制,则可以通过应用程序的Web.xml描述符配置身份验证。您很可能需要在容器中定义一个领域,并在web.xml描述符中使用元素引用它。比如:

/休息/管理/*

自定义身份验证 另一方面,在执行中所述的自定义身份验证时,可以使用的自定义实现。在这种情况下,您需要根据LDAP、数据库、文件等手动验证用户

对于自定义身份验证,您可以使用如下所示的:

@提供者 @优先级。身份验证 公共类AuthenticationFilter实现ContainerRequestFilter{ @凌驾 public void filterContainerRequestContext请求上下文抛出IOException{ //验证用户:如何执行验证取决于您 //如果身份验证失败,请使用401状态代码中止请求 //如果身份验证成功,您就知道您的用户声称是谁 final SecurityContext SecurityContext=requestContext.getSecurityContext; requestContext.SetSecurityContext新建SecurityContext{ @凌驾 公共主体getUserPrincipal{ 归还新本金{ @凌驾 公共字符串getName{ //在此处返回用户名 返回null; } }; } @凌驾 公共布尔值isUserInRoleString角色{ //如果用户处于角色中,则返回 返回true; } @凌驾 公共布尔安全{ 返回securityContext.isSecure; } @凌驾 公共字符串getAuthenticationScheme{ 退货习惯; } }; } } 如何执行身份验证是您的事情。HTTP身份验证的推荐方法是在请求的授权头中发送凭据。API将允许您访问请求的详细信息

在这种方法中,您需要编写代码来确定用户是否处于角色中


注意:注意不要依赖于会话。必须为每个请求执行身份验证/授权过程。

它使用接口SecurityContext查找用户/角色,因此您可以在Java EE服务器或Spring Security中找到实现谢谢,但我没有使用SpringOk您使用的是什么应用程序服务器?如果是Java EE服务器,您可以在其文档中找到如何配置securityContext。如果tomcat,我认为您需要找到一个外部实现,可能是spring安全性或。@Thorynque先生,这就是问题所在,安全上下文,但我应该在哪里/如何定义它。从这个页面我可以看到有getSecurityContext函数,我试图从我的应用程序类调用它,但没有这样的方法。您能帮忙吗?第16.1.1.1章对此进行了解释。使用servlet初始化安全上下文时,是servlet容器提供securitycontext,因此需要在服务器中配置用户/配置文件。这个特性包含在JavaEE服务器中,但我认为tomcat中不包含这个特性?是用户发送的用户名吗?还是什么?@MarcoDinatsoli你如何认证用户?显示代码。@MarcoDinatsoli我想您让服务器为您管理身份验证,而不需要代码。我认为您可以使用HttpServletRequest实现SecurityContext。@CássioMazzochiMolin谢谢,但我在哪里可以声明用户名marco是admin角色,听起来我的英语太差了,没人能理解me@MarcoDinatsoli它可以在数据库中,在文件中,硬编码。。。您使用JavaEE安全性还是什么?