业务开发,避免不了登录的环节,登录的方式很多,除了用户密码,短信验证码,邮箱等。其中还有一种不可忽略,其就是借助第三平台如Google账号的登录方式 - OIDC。
前提介绍 - OIDC
OIDC(OpenID Connect)是一个基于 OAuth 2.0 的身份验证协议,用于在应用程序之间安全地传递身份信息。OIDC提供了 身份验证,单点登录(SSO)等功能。
以下是使用授权码模式的典型 OIDC 登录流程:
-
用户请求登录:
• 用户通过客户端(应用程序)请求登录。
• 客户端将用户重定向到授权服务器的登录页面。 -
用户认证:
• 用户在授权服务器的登录页面输入凭据进行认证。
• 授权服务器验证用户身份后,生成一个授权码,并将用户重定向回客户端。 -
交换授权码:
• 客户端接收到授权码后,向三方平台后端发送请求。
• 三方平台后端 在拿着授权码去 授权服务器 验证授权码。
• 验证授权码通过后,则三方平台后端 会生成登录态并返回给客户端。 -
用户登录成功:
• 用户成功登录并可以访问客户端的受保护资源。
如果光看这个介绍,可能不太直观。下面通过1个例子,2个问题,3个记忆点 , 来和大家快速入门,看懂OIDC整体流程。
1个例子
使用OIDC流程,使用Google账号,登录第三方网站Medium 举例,
1)登录方式选择 Goolge账号。
2)会跳转到Google的登录页面,输入Google账号密码。
3)输入Google账号密码后,会再跳回到Medium网站上,并完成了在Medium上的登录。
就此完成了 使用Google账户登录第三方网站的流程。
2个问题
关于登录,我们对于要登录的用户,总要问2个问题
- 登录的用户是谁
- 怎么确定就是这个谁
就像有个人 出差到外地办事之前,先去自己的单位,说”我是xxx,要外出到某地,这个是我的身份证明, 我要办个出门条”,办理出门条后,后续拿着这个出门条作为凭证,可以出入一些相关的机关单位。
对应到上面的流程就是 ,Google作为签发出门条的单位,用户输入了自己Google的账号密码 ,给用户生成了带有个人信息的出门条,随后用户带着出门条,交给了其它相关单位 比如上面的Medium,Medium收到后放行。
3个记忆点
回到OIDC的流程,
-
用户请求登录:
• 用户通过客户端(应用程序)请求登录。
• 客户端将用户重定向到授权服务器的登录页面。 -
用户认证:
• 用户在授权服务器的登录页面输入凭据进行认证。
• 授权服务器验证用户身份后,生成一个授权码,并将用户重定向回客户端。 -
交换授权码:
• 客户端接收到授权码后,向三方平台后端发送请求。
• 三方平台后端 在拿着授权码去 授权服务器 验证授权码。
• 验证授权码通过后,则三方平台后端 会生成登录态并返回给客户端。 -
用户登录成功:
• 用户成功登录并可以访问客户端的受保护资源。
上面的文字描述有些多 ,且有多个角色,第一次看可能需要梳理消化下。其实对于OIDC这个流程,有3个记忆点,对照下图看,过程很简单,
1,跳转登录页
2,完成账号登录
3,消费登录码,生成业务登录态
结语
至此通过1个例子,2个问题,3个记忆点 ,我们对OIDC的流程 有了一个整体的了解。
当然OIDC的流程除了借助Google作为授权服务器,还有其它方式,比如借助开源框架keycloak 来自己搭建授权服务器,这个后面有机会再介绍。