dropwizard中不同资源的多个身份验证器

时间:2015-05-25 23:07:09

标签: authentication dropwizard

假设我有两个资源,/ authenticate和/ protected_resource。 Authenticate验证通过基本http身份验证提供的用户/密码,如果成功,则生成jwt令牌。 / protected_resource期望在oauth中的传入请求头中提供令牌。 我可以安装两个不同的验证器/过滤器,“basic”和“jwt”,并指出基本的用于/ authenticate,jwt用于/ protected_resource吗?

1 个答案:

答案 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
}