Dropwizard Auth2.0客户端实现

时间:2015-09-15 14:00:11

标签: rest oauth-2.0 client dropwizard

我在此页面上阅读https://dropwizard.github.io/dropwizard/manual/auth.html可能会编写基于Auth2.0的服务,但我无法理解我该怎么做这件事。 有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

有一个原因,为什么没有oauth2的例子。使用Oauh2你有一个问题。从客户端到oauth2服务器的方式已经很好地定义了,但是服务和oauth2service之间的验证可以非常自定义。这就是为什么我为此编写自己的Oauth2 Bundle和Oauth2服务提供商。这就是为什么我下面的描述只是理论!

使用您提供的链接,如果您自己验证令牌,则应该很容易实现Oauth2保护的资源。

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

然后使用此注释

@GET
public SecretPlan getSecretPlan(@Auth User user) {
    return dao.findPlanForUser(user);
}

现在你必须实现你的Oauth2身份验证器,这是棘手的部分,因为你必须知道你的验证服务器/服务。他们中的大多数是不同的。在大多数情况下,您必须使用提供的String-Token,然后您可以验证用户是否在Oauth2验证提供程序中注册。

简短的Oauth2概述:

  1. 客户请求来自Oauth2服务提供商(FB,Google,...)的令牌
  2. 客户端将令牌作为hhtp Auth标头
  3. 发送到您的DW应用
  4. 您的DW应用可以针对您首选的oauth2服务提供商验证令牌
  5. Oauth2服务提供商检查令牌是否自行释放,并告诉您的DW应用程序令牌是否有效,在大多数情况下(如FB),您可以访问客户端配置文件或其他任何内容。
  6. 我根据自己的Oauth2服务验证令牌,所以这就是为什么我的身份验证器非常自定义而且对你没有帮助。

    如果您要验证您的oauth2令牌,例如Facebook,那么请阅读一些facebook oauth2 tutorials或任何其他教程,甚至是其他Oauth2验证服务提供商,如谷歌,亚马逊,Instagram ......

    如果Oauth2现在为你工作很多,为什么不使用HTTP基本身份验证呢?在大多数情况下,这就是一个小DW应用程序所需的全部内容。

答案 1 :(得分:1)

Here是将Dropwizard Oauth2与自定义身份验证机制一起使用的示例。