注:文章不涉及dex相关配置和OIDC基础只是,根据工作中的经验描述一下认证的整体流程,如有错误还望指正。
dex的相关学习请参考官网:https://github.com/dexidp/dex
OIDC学习请参考官网:https://openid.net/connect/
dex 作用
从dex官网截取的图片,从图片中可以清晰的看到dex作为认证的中间方,需要我们提供客户端(client)以及身份提供程序(IdP)。
dex 认证流程
前提条件
- client 客户端提供:同时提供/login(用于登录使用和跳转,获取dex登录界面) /callback (回调地址请求dex后端获取token)
- dex配置client_id,secret等,用于获取认证信息
- IdP 存储用户数据
请求过程
- login请求
(1)请求login接口
http://127.0.0.1:8080/login?redirect_uri=http://127.0.0.1:8080/callback
login接口传递redirect_uri地址,作为回调地址
(2)接下来login接口回去访问dex/auth?client_id=test&redirect_uri=http://127.0.0.1:8080callback&response_type=code&scope=openid+email+groups+profile+offline_access&state=login
(3)从dex返回http://127.0.0.1/dex/auth/ldap?req=xxxxxx,并展示dex的登录界面
(4)输入用户名和密码,点击登录之后,IdP验证用户名密码的合法行,生成code返回到callback地址。
- callback请求
callback获取授权的code通过code获取认证的token
这里只是简单分析了认证的请求流程,如果有错误还望大家指正,其他相关内容还请参照dex官网和OIDC官网:https://openid.net/connect/