python-132-KeyCloak学习之(六)模拟单点登录SSO
文章目录1 单点登录(SSO)1.1 本地Session(传统Session+Cookie)1.2 单点登录(SSO)2 极简SSO系统2.1 认证中心(sso_server.py)2.1.1 数据表2.1.2 GET /login(判断你是否登录)2.1.3 POST /login(验证密码,建会话,发票据)2.1.4 GET /verify(应用来问:这张票有效吗)2.1.5 整体代码2.2 业务应用A(app_a.py)2.2.1 GET /(你有本地会话吗)2.2.2 GET /sso_callback(SSO跳回来了带着票据)2.2.3 整体代码2.3 业务应用B(app_b.py)3 操作流程3.1 操作步骤3.2 免密登录的魔法1 单点登录(SSO)单点登录(SSO)的核心痛点是解决“多个应用之间的身份共享”。SSO的全称是Single Sign-On,中文翻译为单点登录。1.1 本地Session(传统Session+Cookie)本地Session:假设你有两个网站A和B。你登录了A,A给你发了一个 Cookie。当你去访问B时,B根本不认识A发的Cookie,所以你还得在B重新输入账号密码登录。这就是传统的Session + Cookie模式。(1)登录时:你在浏览器输入账号密码,服务器验证成功后,会创建一个“会话”(Session)并把用户信息存起来,同时给浏览器发一个“通行证”(Cookie)。(2)后续访问:浏览器再访问网站的其他页面(比如/other)时,会自动带上这个“通行证”(Cookie)。服务器收到请求后,核对“通行证”,就知道你是谁,然后返回你有权查看的页面。所以,你测试的/login-/other流程,正是模拟了用户从“登录”到“访问个人页面”的完整过程。1.2 单点登录(SSO)单点登录(SSO):你登录了A,当你再去访问B时,B会自动识别出你已经登录了A,直接让你进入B的页面,全程不需要再输入密码。2 极简SSO系统搭建一个测试环境,用两个不同的Flask应用来演示真正的SSO效果。一个应用登录,另一个应用自动免密进入,这