1

我正在为现有应用程序实现 REST 层。我的用户名和密码存储在数据库中,我想在调用我的 REST 服务时验证这些凭据。请注意,这是一个独立的应用程序。

经过调查,我想出了两种方法。

  • 使用 HTTPS 的基本实现 - 这种方法确保传递的用户名和密码不会被中间人攻击篡改。
  • 使用身份验证令牌(JWT) - 用户最初传递他的用户名和密码,服务器返回身份验证令牌。一旦用户拥有可用于后续请求的身份验证令牌。
  • 使用 OAuth 2.0 - 我对这种方法很困惑。在阅读文档和规范后,我发现由于我的应用程序是独立的,我需要实现授权服务器、资源服务器等。

我被要求在这里实现 OAuth,但我不相信在这种情况下需要 OAuth。我更倾向于只实现 JWT(tokens)

在这种情况下,OAuth 真的是强制性的吗?我对 OAuth 的理解是当您已经拥有 Facebook/Google 等服务时使用它。

有人可以确认我的思路是否正确以及在这种情况下是否需要 OAuth 2.0?

4

1 回答 1

0

OAuth 2.0 的主要目标是允许用户通过第三方身份验证提供商(例如 Google、Facebook 等)进行身份验证以使用客户端应用程序,而不会将其凭据(通常是用户名/密码)暴露给客户端。

在您的情况下,如果用户只使用他们在您的数据库中的凭据对您的系统进行身份验证,那么实施 OAuth 2.0 不会为您增加任何实质性价值。

OAuth 2.0 规范确实定义了"Resource Owner Password Credentials grant",适用于旧用例,适用于您的情况:用户发送凭据,您返回访问令牌(如果您愿意,可以是 JWT) . 如果从管理或营销的角度来看是可取的,您可以实施资源所有者密码凭证授权并合法地声明您的应用程序“符合 RFC6749 定义的 OAuth2 的子集”。

于 2017-03-15T11:14:08.163 回答