OpenID Connect协议入门
一、简介
OpenID Connect是基于OAuth 2.0规范的可互操作的身份验证协议。它使用简单的REST/JSON消息流来实现,和之前任何一种身份认证协议相比,开发者可以轻松集成。
OpenID Connect允许开发者验证跨网站和应用的用户,而无需拥有管理密码文件。OpenID Connect允许所有类型的客户,包括基于浏览器的JavaScript和本地移动应用程序,启动登录流动和接收可验证断言对登录用户的身份
二、基础
简单来说,OIDC是一种安全机制,用于应用连接到身份认证服务器获取用户信息,并将这些信息以安全可靠的方法返回给应用。
OpenID 和 OAuth协议常常被一起提及,但是二者是有区别的:
- OpenID是Authentication,即认证,对用户身份进行认证,判断其身份是否有效,也就是让网站知道“你是你所声称的那个用户”
- OAuth是Authorization,即授权,在已知用户身份合法的情况下,经用户授权来允许某些操作,也就是让网站知道“你能被允许做那些事情”
由此可知,授权要在认证之后进行,只有确定用户身份之后才能授权
身份验证 + OAuth2.0 = OpenID Connect
三、流程
OAuth2提供了Access Token来解决授权第三方客户端访问受保护资源的问题;相似的,OIDC在这个基础上提供了ID Token来解决第三方客户端识别用户身份的问题。OIDC的核心在于在OAuth2的授权流程中,一并提供用户身份认证信息给到第三方客户端,ID token使用JWT格式来包装,得益于JWT的自包含性,紧凑性以及防篡改机制,使得ID-Token可以安全的传递给第三方客户端程序并且容易被验证。
可知,OIDC遵循OAuth协议流程,在申请Access-Token的同时,也返回了ID-Token来验证用户身份。