SAS-Separate-Consent-And-Device-Authorize-Page
2023-12-01修改:在session-data-redis(Github)分支中添加了基于
spring-session-data-redis的实现,无需借助nonceId来保持认证状态,该分支已去除所有nonceId相关内容,需要注意的是axios在初始化时需要添加配置withCredentials: true,让请求携带cookie。当然一些响应json的处理还是使用下方的内容。
一、前言
在之前的文章(实现授权码模式使用前后端分离的登录页面)中实现了前后端分离的登录页面,但这篇文章中只分离了登录页面,鉴于部分读者好奇授权确认页面分离的实现,就实现一下授权确认页面的分离,同时设备码流程的授权确认页面与授权码流程的授权确认页面是同一个,这里也需要兼容一下,还有就是设备码流程中有一个校验设备码的页面,这里也需要分离出来。
前文中有提到,在前后端分离的模式下,在页面发起的请求需要响应json不能重定向了,所以需要修改相关接口调用成功后响应json。话不多说,直接上代码。
二、编码
1. 需要修改的内容
- 重定向至授权确认页面时直接携带相关参数重定向至前端项目中
- 提供接口查询登录用户在发起授权的客户端中相关scope信息
- 重定向至设备码校验页面时携带当前
sessionId(nonceId)重定向至前端项目中 - 编写授权确认失败处理类,在调用确认授权接口失败时响应json
- 编写授权成功处理类,在调用授权确认接口成功时响应json
- 编写校验设备码成功响应类,在校验设备码成功后响应json
- 修改重定向至登录页面处理,兼容在请求校验设备码时登录信息过期处理
- 将以上内容添加至认证服务配置中
- 前端项目中编写授权确认、设备码校验、设备码校验成功页面