2016-08-30 72 views
1

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

经过调查,我找到了2种方法。

  • HTTPS的基本实现 - 此方法确保 传递的用户名和密码不被Man在中间攻击中篡改。
  • 使用认证令牌(JWT) - 用户最初将他的用户ID 和密码,服务器还给身份验证token.Once用户 有可能被用于后续 请求身份验证令牌。
  • 使用OAuth 2.0 - 我很困惑这种方法。阅读文档和规范后,我发现,因为我的应用程序 是独立的,我需要实现授权服务器,资源 服务器等

有人问我在这里实现OAuth的,但我不相信在这种情况下需要OAuth。我更倾向于实施JWT(令牌)

在这种情况下,OAuth确实是强制要求的。我对OAuth的理解是,当您已经拥有像Facebook/Google这样的服务时,会使用它。

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

+0

OAuth 2.0和JWT可以一起使用(访问令牌可以是JWT)。不知道这是不是混淆的地方,但如果你只有一个资源需要担心,这听起来像JWTs可以工作? – neverendingqs

+0

或者,您被要求实施类似“使用Google登录”的任何机会? – neverendingqs

+0

@neverendingqs该产品是做一些“xyz”任务的独立企业产品,我为这些任务公开了REST API。我无法拥有“使用脸书或谷歌登录”之类的东西。我知道Oauth2和JWT可以一起使用,但我的主要困惑是OAuth 2.0是否适合这种情况?我可以使用Oauth2验证存储在数据库中的用户名和密码。我将如何实现资源服务器,授权服务器? – Vishal

回答

0

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

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

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