写点什么

如何搭建一个专属的认证中心(一)

作者:Kevin_913
  • 2023-09-29
    广东
  • 本文字数:979 字

    阅读完需:约 3 分钟

这一系列文章将会给大家完整的介绍如何自己搭建一个专属的认证中心,并且如何使用。


流程图

1、FE:前端应用,用户在应用上将会访问受保护的资源。

2、BFF:backend-for-frontend,会保存应用的 clientid 和 clientsecret,并跟认证服务器交互。

3、Oauth2:核心模块,用来做 oauth2 的认证,同时内置一个登录和认证界面。

4、Resource server:资源服务器,需要 access token 才能访问。


前提条件:


首先需要在 Oauth2 注册一个 clientId 以及对应的 callback。

双 Token 机制,RefreshToken 和 AccessToken,其中 RefreshToken 的有效期要大大长于 AccessToken,AccessToken 是在访问受保护资源的必要的,RefreshToken 用来重新生成 AccessToken。


流程讲解:


用户首次访问主页。


1、将会由应用的登录页面跳转到 Oauth2 的统一登录页面,当用户登录以及授权完成以后,认证中心将会跳转到 clientid 设置的 callback 地址,也就是应用主页面,并携带一个获取 refresh token 和 access token 的 code。

2、FE 将这个访问 BFF 的 api 传入第一步返回的 code,去获取 refresh token 和 access token,BFF 将这个 code 结合 clientid+clientsecret 认证去到 Oauth2 获取 tokens。

3、FE 得到 tokens 以后,将 tokens 存放到浏览器的 localstorage。

4、FE 访问 Resource Server,带上得到的 accesstoken,拿到对应的资源。


用户正常访问 - RefreshToken


1、从 localstorage 中获取 refreshtoken。

2、通过 BFF 去验证 refreshtoken 是否在有效期内,BFF 同样会通过 refreshtoken 去 Oauth2 获取 accesstoken。

3、如果 BFF 返回结果包含 accesstoken,那就意味着 refreshtoken 还在有效期,这样可以通过 accesstoken 去访问资源服务器的资源。

4、如果 BFF 返回的结果包含 error,那就意味着 refreshtoken 已经过期,就会跳转到 FE 的登录页面,重复用户首次访问主页的操作。


用户持续页面操作 - AccessToken


1、当访问资源服务的时候,accesstoken 还在有效期内,资源服务器正常返回请求资源。

2、当访问资源服务器,accesstoken 已经失效,资源服务器会返回 401 状态码,这样 FE 将会用 refreshtoken 去到 BFF 获取新的 token,BFF 将 refreshtoken 结合 clientid+clientsecret 认证去 Oauth2 获得新的 accesstoken,FE 拿到新的 accesstoken 后,更新 storage 的值,然后重新去资源服务器获取资源。


这就是一个完整的自定义认证中心的工作流程,后续将会更新每一个模块的搭建以及使用。


视频地址:如何搭建一个专属的认证中心(一)_哔哩哔哩_bilibili

发布于: 刚刚阅读数: 6
用户头像

Kevin_913

关注

纸上得来终觉浅,绝知此事要躬行。 2019-02-25 加入

专注于代码和设计15+年。 主要涉及Java,Golang,云平台。

评论

发布
暂无评论
如何搭建一个专属的认证中心(一)_spring security_Kevin_913_InfoQ写作社区