Firebase - 自定义oAuth2服务 - 授权码?

时间:2018-03-06 09:09:43

标签: firebase oauth-2.0 firebase-authentication

有一个应用想要使用oAuth2对我的用户进行身份验证。

所以他们打开一个窗口,带有authorize网址和参数(例如重定向uri)

赞:https://my-website.com/api/authLauncherauthorize?redirect=SOME_URI

现在我有自己的firebase-login,当用户登录时,我从firebase获取他们的访问令牌。这就是我想要回应的内容。

但是,在oAuth2指南/解释中,如https://aaronparecki.com/oauth-2-simplified/我看到我应该返回一个授权码,我不明白我从哪里可以得到它?

我可以做的是生成废话代码,将其在数据库中与访问令牌配对,然后在“令牌”请求中发送正确的访问令牌。那是我应该做的吗?

为了清楚起见,这是我第一次自己编写oAuth2服务。

2 个答案:

答案 0 :(得分:3)

OAuth是一个提供对资源进行身份验证访问的系统。该资源可以是例如用户页面或对该用户页面的编辑权限。因此,您的目标是为合适的人提供访问权限。

当有人登录时,他们会获得一个令牌。你的部分是生成你想要的令牌,可能是某种形式的用户数据到base64或完全随机。获取此令牌并将其与权限相关联,例如查看页面,编辑页面甚至更简单的内容,例如查看用户的电子邮件。

OAuth2令牌和/或权限应该可以撤销而不删除用户。您不应该使用OAuth2来识别某人。

如果我正确理解你的问题:

  1. 用户访问某个网站
  2. 用户希望使用您的网站OAuth2注册或登录
  3. 您重定向回原始页面并发送生成的令牌
  4. 该页面可以使用此令牌访问您网站上的内容

答案 1 :(得分:1)

假设您是主机站点,给定一个想要连接第三方应用程序的用户,那么流程将是这样的:

  • 用户登陆网站 - 点击登录Github

  • 用户被重定向到他们登录的Github网站并点击“授权”

  • Github使用身份验证令将用户重定向回您的网站/authorize

  • 您的站点然后将该令牌传递回第三方API(在本例中为github),以换取访问令牌和刷新令牌。

  • 然后,您可以将该授权令牌传递给API端点以获取有关它的详细信息。如果令牌过期,您可以使用刷新令牌获取新的Auth令牌。两个令牌都应存储在您的数据库中供您的用户使用。

然而写下这一切我意识到你问的是如何生成授权令牌,所以我猜你实际上是这个例子中的第三方API。因此,您需要使用随机生成器生成授权令牌。由于您使用的是firebase,因此您可能需要尝试使用其令牌生成器:https://github.com/firebase/firebase-token-generator-node

我相信还有一些更新的信息:https://firebase.google.com/docs/auth/admin/#create_a_custom_token

就像你说的那样,你会将它存储在与用户关联的数据库中,然后当主机站点将该用户的身份验证令牌发送到您的服务器时,您将其交换为授权令牌(如果请求则刷新令牌)。

谷歌如何做也值得一读,因为你会做类似的事情:https://developers.google.com/identity/protocols/OAuth2UserAgent#validatetoken

JWT是生成令牌的另一种选择:https://jwt.io/