OIDC
2020-12-17 19:56:51 60 举报
OAuth2、oidc协议请求流程说明及详细设计步骤
作者其他创作
大纲/内容
认证中心验证1、查询数据库,验证参数client_id2、client_id合法,是否有该全局会话3、验证未登录,返回登录页面
完成单点登录
返回access_token
B、验证A中传递的参数,让用户授权可以访问的权限
认证中心登录页面
Dynamic Registration
C、Response认证返回1、跳转到A中的重定向地址,并返回code2、返回state参数
根据access_token获取userinfo
用户中心缓存数据存储数据key / valuessessionid / codecode / sessionidapp_sessionid / appidsuser_sessionid / user
。。。
基于OAuth2的简化模式
重定向到认证中心登录:www.sso.com/login?redirect_uri=http://www.cweb.com&client_id=xxx
UserInfo Endpoint:用户信息接口(受OAuth2保护),当RP使用ID-Token访问时,返回授权用户的信息,此接口必须使用HTTPS
A、认证请求1、response_type:请求类型(code)2、client_id:第三方应用ID3、state:字符串,用于加密,防止CSRF攻击4、redirect_url:授权成功后重定向地址5、scope:OIDC包含openid的参数
认证中心1、创建全局会话,保存session信息2、缓存用户信息3、创建code,缓存code对应sessionid4、创建sessionid对应的appid关系5、重定向到子应用系统,携带参数code、state
用户访问www.bweb.com/login
Session Management
OAuth2协议子应用一
用户、浏览器
OAuth2+jwt协议应用
授权应答
参数校验:1.client_id、client_secret是否合法2.redirect_uri是否和之前步骤中的redirect_uri一致3.code是否合法:4.是否过期5.是否被重复使用,若是就视为一次攻击,加入日志审计,并将之前为code生成的access token撤销6.比较code和应用的client id是否匹配
用户输入账号、密码进行登录
用户输入账号、密码登录
F、携带Access_token请求用户信息
重定向到ipd认证:www.sso.com/login?&response_type=code&client_id=xxx&redirect_uri=http://www.oauth1.com/authorization_callback&state=xxx
www.aweb.com
回调返回code:http://localhost:www.oauth1.com/authorization_callback?code=xxx&state=xxx
www.sso.com
Discovery
验证token
1、验证已登录2、根据sessionId获取全局code3、重定向回调地址,携带code
认证成功
www.oauth2.com
www.cweb.com.com/callback?code=xxx
返回资源信息
返回userinfo
在OAuth2的基础上引入id_token,用于身份识别
用户访问www.oauth1.com/resouces
参数认证成功:1、创建全局会话,保存session信息,用户信息到redis缓存2、生成code3、返回原state
子应用拦截未登录,重定向到认证中心
EU:End User,用户
RP:Relying Party ,用来代指OAuth2中的受信任的客户端,身份认证和授权信息的消费方;
相关定义
认证中心验证1、查询数据库,client_id是否合法2、返回登录页面
混合模式
根据access_token请求userinfo
认证成功返回code:http://localhost:www.aweb.com/authorization_callback?code=xxx&state=xxx
基于 OAuth 2.0 的轻量级认证 + 授权协议规定了其他应用,如A(XX 邮件系统), B(XX 聊天系统),C(XX 文档系统),如何到你的「中央数据表」中取出用户数据,约定了交互方式、安全规范等
协议族
Oauth2相当于把钥匙授权给任何人,这个人拿着钥匙都能开门;OIDC相当于拿着这个钥匙开门的必须是你本人才可以;
Form Post Response Mode
SpringSecurity框架应用
核心?
www.bweb.com
OP:OpenID Provider,有能力提供EU身份认证的服务方(比如OAuth2中的授权服务),用来为RP提供EU的身份认证信息
core
ID-Token:JWT格式的数据,包含EU身份认证的信息
客户端
是什么?
子系统拦截未登录
认证中心
www.oauth1.com
用户认证中心
校验state是否为自己发送的参数
用户认证中心缓存数据
基于OAuth2的授权码模式
OAuth2协议子应用二
子系统拦截未登录重定向到认证中心
G、返回数据信息
重定向到ipd认证:www.sso.com/login?&response_type=code&scope=openid&client_id=xxx&redirect_uri=http://www.aweb.com/authorization_callback&state=xxx
生成JWT格式的token
认证中心idp
D、Access_Token请求1、grant_type:请求类型(authorization_code)2、code:C中请求返回的3、redirect_url:和A中相同4、client_id:和A中相同5、client_secret:用于校验客户端身份合法的秘钥
OIDC(OpenID Connect)
流程?
www.cweb.com
OAuth2协议应用
常用模式
OIDC由多个规范构成,其中包含一个核心的规范,多个可选支持的规范来提供扩展支持1、Core:必选。定义OIDC的核心功能,在OAuth 2.0之上构建身份认证,以及如何使用Claims来传递用户的信息。2、Discovery:可选。发现服务,使客户端可以动态的获取OIDC服务相关的元数据描述信息(比如支持那些规范,接口地址是什么等等)。3、Dynamic Registration :可选。动态注册服务,使客户端可以动态的注册到OIDC的OP(这个缩写后面会解释)。4、OAuth 2.0 Multiple Response Types :可选。针对OAuth2的扩展,提供几个新的response_type。5、OAuth 2.0 Form Post Response Mode:可选。针对OAuth2的扩展,OAuth2回传信息给客户端是通过URL的querystring和fragment这两种方式,这个扩展标准提供了一基于form表单的形式把数据post给客户端的机制。6、Session Management :可选。Session管理,用于规范OIDC服务如何管理Session信息。7、Front-Channel Logout:可选。基于前端的注销机制,使得RP(这个缩写后面会解释)可以不使用OP的iframe来退出。8、Back-Channel Logout:可选。基于后端的注销机制,定义了RP和OP直接如何通信来完成注销。
用户访问www.aweb.com/login
用户
E、Access_Token返回1、access_token:访问令牌2、refresh_token:刷新令牌3、expires_in:过期时间4、id_token:身份令牌
用户访问www.cweb.com/login
0 条评论
下一页