如何理解何时使用 oauth

Posted

技术标签:

【中文标题】如何理解何时使用 oauth【英文标题】:How to understand when oauth is being used 【发布时间】:2017-05-07 20:12:05 【问题描述】:

我试图了解在什么情况下我应该使用 oauth。通过阅读spec,我了解到您实际上是在将身份证明委托给第三方。

因此,如果我们以 *** 的登录页面为例,您会得到

Oauth2 被用于 google 和 facebook,我如何确定 *** 使用的是什么(直接输入用户名和密码时)?那也是oauth 2吗?如果它使用 oauth,我将如何了解他们使用的流程?

【问题讨论】:

【参考方案1】:

您的问题有点不清楚,但我认为您要问的是 SO 或其他网站是否将 oAuth 用于其所有身份验证方案。他们可以。如果他们在您进行身份验证时使用 oAuth 和用户密码身份验证,则您返回的响应中应该包含一个授权令牌和一个刷新令牌,然后您将使用它们对每个后续请求进行身份验证。希望这可以帮助。 oAuth 不是一种技术,它是一种关于如何以更好的方式进行身份验证的协议。

【讨论】:

对不起,这个 oauth 的东西让我很困惑,我只是想弄清楚其他人做了什么,以便将其与我的问题联系起来。我知道这是一个协议,我试图弄清楚他们是否正在使用该协议以及他们正在使用的流程,例如 - 资源所有者密码凭据授予或隐式授予等 - 有什么办法可以告诉我们吗? 你的问题到底是什么?【参考方案2】:

点击使用gmail登录时查看请求URL是什么...

https://accounts.google.com/ServiceLogin?passive=1209600&continue=https://accounts.google.com/o/oauth2/auth?client_id%3D717762328687-p17pldm5fteklla3nplbss3ai9slta0a.apps.googleusercontent.com%26scope%3Dprofile%2Bemail%26redirect_uri%3Dhttps://stackauth.com/auth/oauth2/google%26state%3D%257B%2522sid%2522:1,%2522st%2522:%2522e35d652c26ae7fad9b61f6176cc93f2eb9bbb240c32231bc95f8270176d7a5d5%2522,%2522ses%2522:%252291fdf487240d4fa38576f780ad448f55%2522%257D%26response_type%3Dcode%26from_login%3D1%26as%3D-8520e47ae71bbb4&oauth=1&sarp=1&scc=1#identifier

auth2 是指oauth 2 吗?我想是的

UPD:据我了解,第三部分支持 OAuth 机制。 SO 可以使用他们自己的 oauth 进行直接输入或标准身份验证。这取决于 SO。

【讨论】:

我知道 oauth 2 正在用于 google 和 facebook,我要问的是关于内联身份验证。【参考方案3】:

为了简短易懂:

如果您想为您的应用程序添加身份验证,并且希望将一些安全问题留给 Facebook、Google 和 *** 等大公司,那么如果您不知道如何准确地处理如此微妙的任务和/或者您没有使用特定的身份验证工具/框架。

另一方面,从用户的角度来看,应用程序将更加用户友好(只需单击授权,而不是痛苦的注册)。

如果您想要更详细的技术解释,我建议您阅读其他 *** 帖子: OAuth 2.0: Benefits and use cases — why?

【讨论】:

这是有道理的,但是假设我不想假设我的客户拥有 gmail/twitter/*** 帐户,为了完成繁重的工作,我需要实现自己的身份服务器对吗?我猜***有他们自己的网站身份服务器?请注意,我已经使用设计(ruby gem)进行了身份验证设置。我们想要一些更重的东西,允许用户一次在我们所有的平台上进行身份验证(单点登录)。我们还想保护 API 等。 这就是为什么,一般来说,所有网站现在都允许您使用 gmail/twitter/*** 帐户或以旧方式创建新帐户。是为了增强安全性/用户体验,如果它不符合您项目的要求,根本不要使用这样的功能。

以上是关于如何理解何时使用 oauth的主要内容,如果未能解决你的问题,请参考以下文章

如何识别 OAuth 令牌是不是已过期?

如何识别OAuth令牌是否已过期?

在 Spring oauth2 中使用类 ResourceServerConfiguration.configure 中的 HttpSecurity.requestMatchers

如何理解 SpatialDropout1D 以及何时使用它?

何时以及如何使用休眠二级缓存?

何时使用IdentityServer 3进行OAuth