【发布时间】:2020-07-16 06:45:00
【问题描述】:
我曾向许多开发人员询问过这个问题,甚至在堆栈溢出和 CSharpCorner 中也曾问过这个问题,但从未得到满意的答案。 根据每个开发人员的说法,oauth2.0 只有一个用例,如下所述。
“嘿,你想用其他网站的登录名登录我们的网站吗?
我的问题是 如果我有一个 REST API,它只能由我的前端客户端(浏览器和移动设备)使用,并且不涉及第三方应用程序。 OAuth2.0 是正确的工具吗?我知道有表单和基本身份验证。但是社交登录是 OAuth2.0 的唯一用例吗
我礼貌地要求在这里回答所有oauth大师的问题,如果您只是要陈述,请不要回答
Oauth 是一种授权协议,它允许一个应用代表用户使用另一个应用的服务,而无需实际知道他的密码。
【问题讨论】:
-
您可以拥有一个身份验证提供程序来提供您想要的尽可能多的服务。如果您有多个服务,这是集中身份验证的一种方法。如果你只有一个服务,这有点过分了
-
Oauth 用于分离资源和身份验证。在rest后面你会有资源,这些资源有授权策略,谁可以访问什么,要应用这些策略我们需要知道你是谁,这就是身份验证。如果您已经拥有能够对某人进行身份验证的服务,则 oauth 是一种将这种身份验证从您的服务中卸载的方式(标准)。您需要一个理由来从您的应用程序中卸载此身份验证,因为这会增加同谋
-
对我来说,卸载身份验证的最大优势不是它自己的身份验证,而是用户帐户数据库。不维护用户帐户数据库的安全需要付出很多努力和头痛。无论如何,您几乎总是需要向用户附加一些信息,并最终拥有一个包含此信息的配置文件表,但所有密码恢复流程和安全措施都不由您负责。如果您同时负责这两项工作,并且只有一个客户端服务,那么我认为没有理由卸载身份验证,HIH
-
@geckos 对 ....意味着当您不需要第三方登录提供程序时,您也找不到任何 Oauth 用途,那么当人们说使用 Oauth 保护您的 API 时意味着什么?我最近遇到了一个关于 udemy 的课程,标题是“使用 OAuth 成为 API 安全专家”,它的真正含义是什么?