我正在做一个用于自定义身份验证的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)));
答案 0 :(得分:1)
OAuth
不是您可以通过使用简单的浏览器完成的事情。您实现的内容需要设置以下标头:
Authorization: Bearer {your username}
在您提供此功能之前,您将获得401 Credentials required
。
浏览器可以理解Basic Authentication
并向您显示一个简单的用户名密码对话框,但OAuth
无法实现这一点,因为它是一个高度灵活的系统,每个系统都有不同的格式应用。这就是您使用dropwizard
提供Web(REST)服务的原因,以及客户端(例如,如果您想使用浏览器,则使用javascript的应用程序)查询此服务,同时保留OAuth token
。< / p>
我建议您详细了解OAuth
。在此期间,您可以使用简单的REST应用程序(例如Postman)添加上面提到的标题来测试此应用程序。