OIDC & OAuth2.0 认证协议最佳实践系列 02 - 授权码模式(Authorization Code)接入 Authing

在上一篇文章OIDC & OAuth2.0 认证协议最佳实践系列 02 - 授权码模式(Authorization Code)接入 Authing中,我们整体介绍 OIDC / OAuth2.0 协议,本次我们将重点围绕授权码模式(Authorization Code)以及接入 Authing 进行介绍,从而让你的系统快速具备接入用户认证的标准体系。

接入 Authing 后的优势: 在整个 Authing 的身份源中,已经包含了社会化登录方式 微信、微博、QQ、FB、TW ...等等,企业登录方式 飞书、钉钉、企微、AD 等等,只要你完成了接入 Authing 就意味着你的业务系统具备了这些能力。

01 授权码模式(Authorization Code)

1.1 整体流程

整体上,有以下流程

  1. 在你的应用中,让用户访问登录链接,浏览器跳转到 Authing,用户在 Authing 完成认证。

  2. 浏览器接收到一个从 Authing 服务器发来的授权码。

  3. 浏览器通过重定向将授权码发送到你的应用后端。

  4. 你的应用服务将授权码发送到 Authing 获取 AccessToken 和 IdToken,如果需要,还会返回 refresh token。

  5. 你的应用后端现在知道了用户的身份,后续可以保存用户信息,重定向到前端其他页面,使用 AccessToken 调用资源方的其他 API 等等。

流程图如下:

1.2 准备接入

  • 在 Authing 创建应用及配置

创建应用:

配置登录回调和登出回调,配置为你实际项目的地址,我们在这里配置 localhost 用于测试。

若你想匹配多个登录/登出回调,可以使用 ‘*’ 号进行通配,登录/登出回调可以是如下格式:

在协议配置中,我们勾选 authorization_code 并且使用 code 作为返回类型,如下图所示:

1.3 接入测试

  • 01 所需调用接口列表

GET${host}/oidc/auth 发起登录(拼接你的发起登录地址)
POST${host}/oidc/token 获取 Token
GET${host}/session/me 获取用户信息
POST${host}/oidc/token/introspection 校验 Token
POST${host}/oidc/token 刷新 Token
POST${host}/oidc/revocation 吊销 Token
GET${host}/session/end 登出
  • 02 Run in Postman

以下要介绍的接口可以通过我们的在线 postman collection 自行 fork 体验。

  • 03 发起登录

GET${host}/oidc/auth

这是基于浏览器的 OIDC 的起点,请求对用户进行身份验证,并会在验证成功后返回授权码到您所指定的 redirect_uri。

拼接发起登录地址(浏览器中打开): https://{host}/oidc/auth?scope=openid+profile+email+phone+username&redirect_uri={redirect_uri}&response_type=code&client_id={应用 ID}&state={state}

如您需要额外获取 refresh_token 则请求格式为: https://{host}/oidc/auth? scope=openid+profile+offline_access+username+email+phone&redirect_uri=http://localhost:8080/&response_type=code&client_id={应用 ID}&prompt=consent&state={state}

点此体验: https://oidc-authorization-code.authing.cn/oidc/auth?scope=openid+profile+offline_access+username+email+phone&redirect_uri=http://localhost:8080/&response_type=code&prompt=consent&nonce=054d3c0e-9df9-46f2-a8fa-a7f479032660&client_id=63eb4585156d977101dd3750&state=1676366724

参数说明

  • 04 获取 Token

POST${host}/oidc/token

用户在 Authing 侧完成登录操作后, Authing 会将生成的 code 作为参数回调到 redirect_uri 地址,此时通过 code 换 token 接口即可拿到对应的访问令牌 access_token 。

请求参数

请求事例

curl --location --request POST 'https://{host}/oidc/token
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值