获取错误“需要凭据”才能访问dropwizard oauth Web服务

时间:2015-06-22 06:37:48

标签: java hibernate maven dropwizard

我正在做一个用于自定义身份验证的dropwizard maven项目。我按照文件https://github.com/remmelt/dropwizard-oauth2-provider/blob/master/src/main/java/com/remmelt/examples/auth/SimpleAuthenticator.java进行了操作。但我得到“凭据是访问此资源所必需的。”我运行项目并从浏览器访问URL时出现此消息。任何帮助将不胜感激。我的代码是这样的..

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 个答案:

答案 0 :(得分:1)

OAuth不是您可以通过使用简单的浏览器完成的事情。您实现的内容需要设置以下标头:

Authorization: Bearer {your username}

在您提供此功能之前,您将获得401 Credentials required

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

我建议您详细了解OAuth。在此期间,您可以使用简单的REST应用程序(例如Postman)添加上面提到的标题来测试此应用程序。