oauth-2.0 - Oauth2.0和用户注册登录
问题描述
如果我需要让用户在我的网站上注册,我可以使用 oauth2.0 来获取电子邮件地址等,并且我可以获得访问令牌以进一步调用资源服务器。我的问题是,一旦我从资源服务器获得了用户的电子邮件和姓名,我如何在我的网站上注册用户?当用户对我的网站进行后续调用时,我如何识别它是同一用户?
解决方案
用户可以更改授权服务器上的电子邮件和名称,但用户的 id 不会。您可以通过从授权服务器获取字段来获取用户的 ID,sub
以在您的数据库上创建用户记录。例如保存在数据库中,如:
sub: string <-- user id on google
provider: google <--- the provider (Authorization Server)
-> 每次用户通过 google 登录时,您可以通过检查 (sub, provider) 来检查用户是否存在于您的数据库中
你在哪里可以得到sub
?
- 使用访问令牌获取 openid 连接的用户信息端点,或者
- 验证和提取 id_token 例如:https ://developers.google.com/identity/protocols/oauth2/openid-connect#obtainuserinfo
推荐阅读
- angular - 在使用 HttpClient 的角度中,我无法获取 json 数据。当我提交表单并在 onSubmit() func 处理它时,它在控制台上显示未定义
- xamarin - Xamarin Forms - 滑出菜单以选择项目
- qt - 树莓派上的 libpqxx
- java - Apache Flink - 使用具有泛型类型参数的类
- git - 如何将所有新的上游分支与我的 fork 同步?
- php - mpdf 裁切标记和出血边距
- python-3.x - 如何使用 python、beautifulsoup 在网页上找到指向与网页相同域名的链接数量?
- linux - 在 Yocto Build 中包含应用程序映像
- python - Python - 理解正则表达式
- sql-server - MSG 209 不明确的列名“派对名称”