keycloak“授权码模式”的运行流程(个人理解)

1. 简介

为了使用keycloak实现对多个客户端(应用程序)的管理,实现一个账号处处登录。本文尝试梳理一下什么是“授权码模式”,及应该怎么理解。

keycloak的访问模式有两种:

一. 授权码模式

二. 隐藏模式

本文只讲我个人理解的授权码模式是怎样运行的

2. 网上的调查资料

后面统一用以下概念来说明:

EU(用户,End User):实际操作浏览器的用户

RP(客户端,Relying Party):用于提供服务的(开发的)应用程序

OP(服务器,OpenID Provider):通过keycloak管理的一组客户端(可以一个账号处处登录的管理账号的服务器)。

网上查看的资料大多是下面这种逻辑,对于初次接触keycloak和OIDC的我来说很难实际理解。(大家可以尝试理解一下)

① RP(客户端)向 OP(服务器)发送请求。

② OP(服务器)对 EU(用户)进行身份验证。

③ OP(服务器)发送 ID 令牌响应到 RP(客户端),通常是访问令牌。

④ RP(客户端)发送 ID访问令牌的请求。向 OP(服务器)索要用户实际数据。

⑤ OP(服务器)的用户实际数据 返回 RP(客户端)有关 EU(用户)的 信息。

 3. 通过实践调查后实际运行机制

(1). 调查前的准备

首先我在本地搭建了一个Keycloak运行环境,可以参照

(5条消息) Keycloak本地服务器搭建_凯尔萨厮的博客-CSDN博客_keycloak

或者(5条消息) 本地keycloak15.1.0下载安装配置启动_凯尔萨厮的博客-CSDN博客_keycloak 安装

然后准备两个可运行的WEB应用程序

怎样域keycloak做代码关联参照(5条消息) keycloak项目代码_凯尔萨厮的博客-CSDN博客

后面说明为(客户端1,客户端2)

(2). 说明开始

1. 用户(输入url)  访问 客户端1

 2. 【客户端】 用预留信息 拼接成 新URL地址 将 用户 重定向到【服务器】(用户感受不到这个操作,这里涉及到跨域访问,需要自行在客户端代码进行配置)

URL例:服务器根URL/auth/realm/域名/client/客户端名(仅作参照)

3. 【服务器】通过URL得知(域名)和(客户端名)过来的请求后,验证【用户】为未登录状态,为【用户】展现 登录页面

 

4. 【用户】输入用户名密码对【客户端】授权

 

 5. 【服务器】预留cookie信息到浏览器,同时 将用户 重定向回【客户端】同时发送【授权码】给客户端

 

 6. 【客户端】通过【授权码】向【服务器】索要【访问令牌】

 7. 【客户端】通过【访问令牌】向【服务器】索要【实际用户数据】

 8. 【客户端】为用户展现 带着【用户数据】的页面

 9. 用户【客户端1】登录状态 访问 【客户端2】同上记步骤1一样(这之后是一键登录的实现流程)

 10. 【客户端2】 用预留信息 拼接成 新URL地址 将 用户 重定向到【服务器】同上记步骤2一样

 11. 【服务器】通过URL得知(域名)和(客户端名),进行用户登录认证同上记步骤3一样

先获取服务器在浏览器里的Cookie信息(只有服务器能获取,客户端不能跨域访问Cookie)

 【服务器】认证Cookie信息,确认【用户】是登录状态,跳过上记步骤4,直接进行步骤5.

后面处理就同步骤6,7,9一样了。

(3). 通过以上逻辑就实现了,一次登录处处访问。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值