我正在编写一个没有 UI 的服务,该服务必须使用 OAuth2 连接到 Web API。我拥有一切 - 客户端 ID、客户端密码、授权 URL、回调 URL、用户名和密码。
我想知道为 OAuth2 token 交换用户名、密码等的最简单方法,以便我可以使用 Web API 进行身份验证。
我一直在看Apache Oltu ,规范的工作流程似乎是:
- 使用
OAuthClientRequest
构建请求 URI - 重定向到 URI,以便用户可以授予访问权限
- 通过
OAuthAccessTokenResponse
获取相应的code并使用它来进行身份验证
同样 - 我无法让应用提示用户;一切都必须以编程方式发生。
我想我正在寻找类似于 DotNetOpenAuth
的 ExchangeUserCredentialForToken()
方法的东西,但用于 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/