【问题标题】:Using OAuth instead of Basic authentication?使用 OAuth 而不是基本身份验证?
【发布时间】:2014-11-06 07:54:04
【问题描述】:

我们有一个网络服务,它目前使用基于 https 的基本身份验证来验证用户请求。我们还有一个使用该服务的网站,以及一个也使用 Web 服务的本地 Windows 客户端。我读过 OAuth,它似​​乎总是用于授予或访问外部资源,即委托,但我试图了解它是否可以替代 Basic Auth。

我不太确定所有部分是如何组合在一起的。您是否在网站上使用 Basic over https 来检索密钥,然后让向 REST 服务发出请求的 javascript 使用 OAuth 而不是 Basic 对 Web 服务进行身份验证?

似乎在某些时候用户需要在表单中输入他们的用户名和密码。我不确定接下来通常会发生什么。这甚至是 OAuth 的用例吗?

【问题讨论】:

    标签: security oauth basic-authentication


    【解决方案1】:

    如果您有用户(资源所有者)的本地数据库帐户,那么您可以将基本身份验证替换为名为“资源所有者密码凭据”流的 OAuth 流之一。 这是一个非常简单的流程,您将 HTTP 发布到您的 HTTP 服务器中指定的端点,通常命名为 /token 此 HTTP 发布操作的内容类型是 x-www-form-urlencoded,因此发布正文将包含类似 grant_type=password&username=Taiseer&password=SuperPass 的内容

    一个请求被发送到/token端点,服务器将根据您的数据库存储验证用户凭据,如果一切都有效,它应该生成一个令牌(签名字符串),其中包含此资源所有者的所有声明(用户)。然后,您的客户端应用程序应在每次使用 bearer 方案调用任何受保护的端点时在 Authorization 标头中显示此令牌。 此令牌在特定时间后过期,您可以从 AuthZ 服务器进行配置。您可以阅读我的详细博文Token Based Authentication 以获取更多详细信息。

    【讨论】:

    • 您描述的不是 OAuth,它是您自己的基于令牌的安全方法。我曾考虑过类似的方案,但想使用一个标准。
    • 此外,您的文章要求通过 http 进行基于表单的身份验证,这将是一个巨大的安全漏洞。
    • 不,我不同意你的观点,这是一个单一的 OAuth 流程,这不是表单身份验证,我已经提到这应该在生产中通过 https 完成。看来你没读好。阅读有关此流程的更多信息:link
    • 很抱歉。我只阅读过有关 OAuth 1.0a 的内容,因此对“资源所有者密码凭据”并不熟悉。我已经阅读了一些关于 OAuth 2.0 的信息,但听起来好像存在一些安全问题。特别是因为其中一位主要开发人员离开了该项目。感谢您的更正,我会重新阅读您的文章并重新访问 OAuth 2.0
    • 不客气,没关系 :) 好吧,但是所有大玩家(Google、Facebook、MS)都在采用它,所以我相信它不会轻易死去。如果您需要进一步的帮助,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 2021-01-25
    • 2014-09-15
    • 1970-01-01
    • 2022-12-22
    • 1970-01-01
    相关资源
    最近更新 更多