获取访问 dropwizard oauth Web 服务的错误"Credentials are required"



我正在做一个用于自定义身份验证的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("nnnString 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)));

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

Authorization: Bearer {your username}

在你提供这个之前,你会得到401 Credentials required.

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

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

相关内容

最新更新