【发布时间】:2017-01-07 04:37:52
【问题描述】:
我正在为现有应用程序实现 REST 层。我的用户名和密码存储在数据库中,我想在调用我的 REST 服务时验证这些凭据。请注意,这是一个独立的应用程序。
经过调查,我想出了两种方法。
- 使用 HTTPS 的基本实现 - 这种方法可确保 传递的用户名和密码不会被中间人攻击篡改。
- 使用身份验证令牌 (JWT) - 用户最初传递他的用户 ID 和密码和服务器返回一个身份验证令牌。一旦用户 具有可用于后续的身份验证令牌 请求。
- 使用 OAuth 2.0 - 我对这种方法很困惑。阅读文档和规范后,我发现自从我的应用程序 是独立的,我需要实现授权服务器,资源 服务器等
我被要求在这里实现 OAuth,但我不相信在这种情况下需要 OAuth。我更倾向于只实现 JWT(tokens)
在这种情况下是否真的需要 OAuth。我对 OAuth 的理解是当您已经拥有 Facebook/Google 等服务时使用它。
有人可以确认我的思路是否正确以及在这种情况下是否需要 OAuth 2.0?
【问题讨论】:
-
OAuth 2.0 和 JWT 可以一起使用(访问令牌可以是 JWT)。不确定这是否是混乱所在,但如果您只需要担心一种资源,听起来 JWT 可以工作吗?
-
或者,您是否有可能被要求实现“使用 Google 登录”之类的功能?
-
@neverendingqs 该产品是独立的企业产品,执行一些“xyz”任务,我正在为这些任务公开 REST api。我不可能有像“用 facebook 或 google 登录”这样的东西。我知道 Oauth2 和 JWT 可以一起使用,但我的主要困惑是 OAuth 2.0 是否适合这种场景?我可以使用 Oauth2 验证存储在数据库中的用户名和密码吗?我将如何实现资源服务器、授权服务器?
-
您是否考虑过资源所有者密码凭证授予 (tools.ietf.org/html/rfc6749#section-4.3)?这是另一种选择。
-
可能“资源所有者密码凭据授予”似乎接近我的规范。您知道任何实现此功能的 java OAuth 库吗?在我的情况下,我需要实现我的授权服务器?
标签: oauth oauth-2.0 jax-rs jwt rest-security