Dropwizard Auth2.0客户端实现

Dropwizard Auth2.0 Client implementation

我在本页 https://dropwizard.github.io/dropwizard/manual/auth.html 上看到可以编写基于 Oauth 2.0 的服务,但我不明白我该怎么做。 有人可以帮助我吗?

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

有了你提供的link,如果你自己验证Token,应该很容易实现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 身份验证器,这是棘手的部分,因为您必须知道您的验证 server/service。他们中的大多数是不同的。在大多数情况下,您必须接受提供的 String-Token 然后您可以验证用户是否已在 Oauth2 验证提供程序中注册。

简短的 Oauth2 概述:

  1. 客户端从 Oauth2 服务提供商(FB,Google,...)请求令牌
  2. 客户端将令牌作为 hhtp Auth 发送到您的 DW 应用程序 header
  3. 您的 DW 应用程序可以根据您首选的 oauth2 服务提供商验证令牌
  4. Oauth2 servide provider 检查令牌是否由其自身释放并告诉您的 DW 应用程序令牌是否有效,在大多数情况下(如 FB)您可以访问客户端配置文件或其他任何内容。

我根据自己的 Oauth2 服务验证令牌,所以这就是为什么我的身份验证器非常自定义并且无法帮助您的原因。

如果您想验证您的 oauth2 令牌,例如Facebook,然后请阅读一些 facebook oauth2 tutorials 或任何其他教程,甚至是其他 Oauth2 验证服务提供商的教程,例如 Google、Amazon、Instagram ...

如果 Oauth2 现在对您来说太麻烦了,为什么不使用 HTTP 基本身份验证?在大多数情况下,这就是一个小型 DW 应用程序所需要的。

Here 是使用带有自定义身份验证机制的 Dropwizard Oauth2 的示例。