【问题标题】:Is there a way to authorize myself with OAuth 2.0 using pure Java?有没有办法使用纯 Java 授权自己使用 OAuth 2.0?
【发布时间】:2016-02-09 00:01:00
【问题描述】:

所以我正在创建一个带有 Apache HTTP 请求的 Java 应用程序,只有我打算使用该请求(这意味着我知道我想要验证的服务器的用户名和密码)。我能够找到的所有在线示例都涉及一个 Web 应用程序,用户在该应用程序中被发送到他们想要进行身份验证的站点(例如 Facebook 或 Stack Exchange)。但是,我希望能够仅通过 Java 进行身份验证。那么有没有一种方法可以让我只使用 Java 进行身份验证?

【问题讨论】:

  • 他们没有办法做到这一点似乎很奇怪。这是令人失望的。 ://
  • 他们不希望您收集用户名和密码。所以没有理由这样做。只需获取一个访问令牌并存储它
  • 访问令牌能为我做什么?抱歉,我对整个 OAuth 的事情真的很陌生,教程已经超出了我的想象。
  • OAuth 起作用因为它要求用户通过服务的托管网站登录 - 从而允许服务提供商负责对用户进行身份验证。不过,这(通常)是一次性的,因为在您通过身份验证门户登录后,服务提供商将给出一个令牌,然后可以使用该令牌代替基于 Web 的身份验证。不同的服务有不同的 OAuth 工作流程,我知道有几个允许您通过将凭据传递到端点来获取令牌(它们的能力可能受到限制)。您尝试使用什么 API?
  • 刚刚看到 facebook 标签 - this page 有指向 java sdks 的链接,可以引导您完成身份验证/和 api 使用。

标签: java facebook oauth oauth-2.0


【解决方案1】:

Resource Owner Password Credentials GrantRFC 6749 中定义的授权流程之一。如果您的授权服务器支持该流程,您可以通过出示您的usernamepassword 请求授权服务器颁发访问令牌。

流程中不显示授权页面,也不进行重定向。

【讨论】:

  • 嗯...我正在尝试为 Stack Exchange API 实现此功能(我将其标记为 facebook,因为它们使用非常相似的 API)。你知道他们是否允许这种流动吗?我正在尝试设置它,但遇到了一些问题。
  • 我正在使用以下教程:ibm.com/developerworks/library/se-oauthjavapt1 并且一切正常,但是当我提交访问令牌的请求时,我收到“找到 302”的响应代码。这让我相信我正在为我的请求查询错误的 URL。我使用stackexchange.com/oauth 作为身份验证服务器,但我认为这是正确的。
  • “RFC 6749, 4.3。”说“授权服务器在启用此授权类型时应特别小心,并且仅在其他流程不可行时才允许它。”因此,在正常情况下,不支持资源所有者密码凭据授予。 OAuth 的主要目的是允许第三方应用程序访问最终用户数据,而无需将 ID 和密码传递给应用程序。从 OAuth 的角度来看,不推荐您尝试执行的操作。您不应期望著名的 OAuth 服务器支持资源所有者密码凭据授予。
猜你喜欢
  • 2017-07-23
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多