访问 dropwizard oauth 网络服务时出现错误 "Credentials are required"

Getting Error "Credentials are required" for accessing dropwizard oauth web services

我正在做一个用于自定义身份验证的 dropwizard maven 项目。我关注了文档https://github.com/remmelt/dropwizard-oauth2-provider/blob/master/src/main/java/com/remmelt/examples/auth/SimpleAuthenticator.java。但是当我 运行 项目并从浏览器访问 URL 时,我收到了 "Credentials are required to access this resource." 这条消息。任何帮助将不胜感激。我的代码是这样的..

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()));
    }
}

资源中的代码class

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

    }

正在应用程序中初始化验证器class

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

OAuth 不是您可以通过使用简单的浏览器来完成的。您已实施的内容需要设置以下 header:

Authorization: Bearer {your username}

在您提供此信息之前,您将获得 401 Credentials required

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

我建议阅读更多关于 OAuth 的内容。同时,您可以通过使用简单的 REST 应用程序(例如 Postman.

添加我在上面提到的 header 来测试此应用程序