java - 如何使用 OAuth2 使用登录名和密码进行身份验证?

标签 java oauth oauth-2.0

我正在编写一个没有 UI 的服务,该服务必须使用 OAuth2 连接到 Web API。我拥有一切 - 客户端 ID、客户端密码、授权 URL、回调 URL、用户名和密码。

我想知道为 OAuth2 token 交换用户名、密码等的最简单方法,以便我可以使用 Web API 进行身份验证。

我一直在看Apache Oltu ,规范的工作流程似乎是:

  1. 使用 OAuthClientRequest 构建请求 URI
  2. 重定向到 URI,以便用户可以授予访问权限
  3. 通过OAuthAccessTokenResponse获取相应的code并使用它来进行身份验证

同样 - 我无法让应用提示用户;一切都必须以编程方式发生。

我想我正在寻找类似于 DotNetOpenAuthExchangeUserCredentialForToken() 方法的东西,但用于 Java。

我倾向于使用 Apache Oltu ,但我对任何框架/解决方案持开放态度。 谢谢!

最佳答案

这取决于授权服务器(将为您提供 access_tokens 的实体)实现的身份验证方法。

在协议(protocol)级别,您正在寻找资源所有者密码凭证授予:https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-31#section-4.3

但并非所有授权服务器都实现了这一点,因此您需要查看它们的文档。 (例如,Facebook、Twitter、Google 不提供此信息)。

这是一个非常简单的交互,所以一般来说,您不需要(客户端)框架。这是 HTTP 请求的示例:https://auth0.com/docs/flows/resource-owner-password-flow

关于java - 如何使用 OAuth2 使用登录名和密码进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21464520/

相关文章:

python - 树莓派 python gspread OAuth 2 错误

java - 释放按键时停止玩家移动

java - 无法在 JTable 的单个单元格中添加两个按钮

java - 开启JIT日志,分析汇编代码,对代码优化有帮助吗?

php - 如何通过 Composer 安装 Abraham 开发的 Twitter OAuth 开发版本?

android - 如何从android中的google plus api获取oauth 2.0 token ?

node.js - NodeJS 访问 token 与刷新 token

websocket - Websocket 的 OAuth2 身份验证 : Pass Bearer Token via Subprotocols?

android - 获取可与服务器共享的 OAuth2 授权码

java - 我怎样才能更好地构建这段代码?