2015-06-22 96 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)添加上面提到的標頭來測試此應用程序。