Vit*_*t D 6 python oauth oauth-2.0 falconframework authlib
我正在尝试使用Python和Falcon Web框架通过社交平台(Github,Facebook,Instagram)使用登录选项为RESTfull API实现OAuth2服务器.但我很难理解这件事应该如何运作.
1.1.在API方面,我正在创建一个端点/auth/login/github
,它基本上会告诉移动应用程序将客户端重定向到Github.com授权页面 - github.com/login/oauth/authorize
1.2.在Github授权页面上,用户将看到以下屏幕:
1.3.按下Authorize后,用户将
callback
使用新授予的临时授权代码进入参数(Github OAuth服务配置)中指定的页面.在我的情况下,URL将如下所示:my.api.com/auth/callback/github?code=AUTH_CODE
2.1.接收回调请求后,我解析/取出通过授权码,并以赎回从后端查询Github.com 授权代码并获得访问令牌(发送使用我的POST请求的客户端ID和客户端密钥对github.com/login/oauth/access_token
)2.2.如果一切顺利,Github将使用访问令牌回复我的POST请求,我可以使用它来获取用户个人资料详细信息(例如电子邮件)
3.1.现在我知道通过Github的授权是成功的(因为我收到了用户的电子邮件),我可以向该用户授予我自己的访问令牌,这样他就可以查询我的API端点.我这样做只是通过添加随机生成OAuth2令牌并将其插入我的数据库,同时通过使用深层链接(例如:myapp:// token)将他重定向到移动应用程序,将相同的令牌返回给用户.3.2.最后,移动应用可以通过向每个请求添加以下标头来查询我的API端点Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42
这是否有意义,这是否是对RESTfull API进行社交授权的正确方法?
这是肯定的一种方式。看起来还不错。
我会让它变得更简单,也许它会更清楚发生了什么。
1.1 [手机APP]将用户重定向到github.com/oauth/authorize?client_id=CLIENT_ID
您在github注册的客户端id
1.2 [移动应用] 用户通过重定向到达fancy.app/callback/github?code=AUTH_CODE
(这是您在 github 上配置的回调 URL)
1.2.1 [移动应用] 使用 AUTH_CODE 调用您的 API 端点
1.3 [API] 与 github 确认 AUTH_CODE 有效。
至此我们已经完成了用户认证;该用户不是随机的,是 github.com 上的用户 xxx,并且您拥有您请求的信息。
现在,如果您需要在 API 上授权该用户,则在 1.3 之后:
1.3.1 [API] 生成令牌
1.3.2 [API] 将令牌存储在某个持久存储中
1.3.3 [API] 为令牌定义一些过期时间(实际上来自 github 的 AUTH_CODE 应该有一些过期时间,请使用它)
1.3 .4【API】返回token给手机APP
我们生成的这个令牌是移动应用程序将用来在 API 上验证用户身份的令牌;不再调用 github(至少在过期之前)。
归档时间: |
|
查看次数: |
837 次 |
最近记录: |