java - 访问 dropwizard oauth Web 服务时出现错误 "Credentials are required"

标签 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...";

    }

在应用程序类中初始化 validator
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并显示一个简单的用户名-密码对话框,但对于 OAuth 是不可能的因为它是一个高度灵活的系统,每个应用程序都有不同的格式。这就是您使用 dropwizard 提供 Web (REST) 服务的原因。和一个客户端(例如,如果你想使用浏览器,一个带有 javascript 的应用程序)在维护 OAuth token 的同时查询这个服务。 .

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

关于java - 访问 dropwizard oauth Web 服务时出现错误 "Credentials are required",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30973446/

相关文章:

java - 如何将 PDFBox.jar 集成到 Android 项目中?

hibernate - JPA Hibernate 调用 Postgres 函数无效返回映射异常 :

java - Spring Boot + jpa 懒加载

java - 使用 maven 构建两次具有不同依赖项的相同 webapp 的最佳方法

java - 无法使用Maven在Spring MVC项目中启动服务器

java - 未能执行目标 org.apache.maven.plugins :maven-surefire-plugin:3. 0.0-M4:test (default-test)

java - Facebook Android SDK 的 key 哈希

java - 单击按钮时出现java.lang.NumberFormatException

java - JPA 一对一关系,其中实体可能不存在

java - Hibernate-如何创建Pojos列表?