2015-06-22 63 views
0

我做了自定义验证的dropwizard Maven项目。我跟着文档https://github.com/remmelt/dropwizard-oauth2-provider/blob/master/src/main/java/com/remmelt/examples/auth/SimpleAuthenticator.java。但是我得到“凭证需要访问此资源。”当我运行该项目并从浏览器访问URL时出现此消息。任何帮助将不胜感激。我的代码是这样的..得到错误“凭据需要”访问dropwizard OAuth网络服务

public class ExampleAuthenticator implements Authenticator<String, User> 
{ 

    @Override 
    public Optional<User> authenticate(String arg0)throws AuthenticationException { 
     // TODO Auto-generated method stub 
     User u = new User(arg0); 
     System.out.println("\n\n\nString arg0"+arg0); 
     return Optional.of(new User(u.getName())); 
    } 
} 

和代码中的资源类

@GET 
    public String Token(@Auth User user) 
    { 
     System.out.println("In UserResource Class in Token Method"); 
     return "Hello..."; 

    } 

在应用程序类初始化认证

environment.jersey().register(AuthFactory.binder(new OAuthFactory<User>(new ExampleAuthenticator(),"SUPER SECRET STUFF",User.class))); 

回答

1

OAuth是不是你可以通过使用简单的浏览器完成。什么您已经实现了预期下面的头被设置:

Authorization: Bearer {your username} 

直到你提供这个,你会得到401 Credentials required

浏览器可以理解Basic Authentication并向您显示一个简单的用户名密码对话框,但OAuth不可能,因为它是一个高度灵活的系统,每个应用程序的格式都不相同。这就是您使用dropwizard以及客户端(例如,如果您想使用浏览器时使用javascript的应用程序)提供Web(REST)服务的原因,请在维护OAuth token的同时查询此服务。

我建议阅读更多关于OAuth。与此同时,您可以使用简单的REST应用程序(如Postman)添加上面提到的标头来测试此应用程序。