【问题标题】:Dropwizard Auth2.0 Client implementationDropwizard Auth2.0 客户端实现
【发布时间】:2023-03-13 18:40:01
【问题描述】:

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

【问题讨论】:

  • 只有基本身份验证。我想学习一些例子,但我什么也没找到

标签: rest oauth-2.0 client dropwizard


【解决方案1】:

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

使用您提供的链接,如果您自己验证 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 身份验证器,这就是棘手的部分,因为您必须了解您的验证服务器/服务。他们中的大多数是不同的。在大多数情况下,您必须获取提供的 String-Token,然后您可以验证用户是否在 Oauth2 验证提供商处注册。

一个简短的 Oauth2 概述:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-12-24
      • 2015-08-28
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 2010-11-08
      • 2022-11-04
      • 2021-04-06
      相关资源
      最近更新 更多