假设我有两个资源,/ authenticate和/ protected_resource。 Authenticate验证通过基本http身份验证提供的用户/密码,如果成功,则生成jwt令牌。 / protected_resource期望在oauth中的传入请求头中提供令牌。 我可以安装两个不同的验证器/过滤器,“basic”和“jwt”,并指出基本的用于/ authenticate,jwt用于/ protected_resource吗?
答案 0 :(得分:-1)
是的,你可以。
我没有特别尝试过这个,但是看一下源代码,根据我在使用AuthProviders时的经验,它应该可行。
确保这些验证者返回不同的类。
environment.jersey().register(AuthFactory.binder(new BasicAuthFactory<User>(new UserAuthenticator(), "User authentication", User.class)));
environment.jersey().register(AuthFactory.binder(new OAuthFactory<Token>(new JwtAuthenticator(), "Jwt authentication", Token.class)));
然后在资源类中:
@Path("/authenticate")
public String authenticate(@Auth User user){
return jwtToken;
}
@Path("/protected_resource")
public FooDto getFoo(@Auth Token token){
// do stuff
}