Skip to content

General

xun edited this page Mar 14, 2024 · 5 revisions

流程梳理

此处页面用于梳理流程。

注册

梳理一下 SAST Link 的登录注册流程。

SAST Link 的注册分为以下几步:

1. 验证帐号有效性

这一步会验证帐号是否已经注册过,也就是看我们的数据库中是否有这个帐号。如果没有则允许注册。

其中这个接口属于/verify/account路径,属于 api -> v1 -> user.go 文件中的 VerifyAccount 函数,关于接口的定义及参数请查看 API-Doc.md(API 文档)。

在这一步之后我们会给用户签发一个 Token,这个 Token 在后面会起作用。实际上这里的 Token 在我们的代码中是被叫做 Ticket 的,来自windpo

2. 发送验证邮件

上一步通过之后,会发送验证码给用户邮箱。但是这个接口需要使用 Token 验证,请查看 Api 文档。

这一步会更新 Ticket,将 Ticket 在 redis 中的 value 更新,以说明这个用户这一步已完成。下面的每一步也是这样。

3. 验证验证码

发送验证邮件之后,需要验证验证码,这也是单独的一个接口,同样的,这个接口也需要使用第一步签发的 Token 进行验证,同时也会验证验证码是否正确。

4. 注册

以上步骤完成之后,真正进入注册步骤,这一步只需要填写密码,但是也是需要第一步的 Token 进行验证。

以上的 Token 会在每一步之后会在 redis 中进行更新,以记录用户的执行步骤。Token 会存储用户名。

登录

1. 验证帐号有效性

登录时也需要验证帐号有效性,与注册使用的是同一个接口,只是其中有个 flag 参数不同,详情请查看 Api 文档。

这一步同样会给用户签发一个 Ticket,用于用户登录。这里的 Ticket 被称为 LOGIN_TICKET。

2. 登录

这个接口接受一个 password 的参数和一个 LOGIN_TICKET 的 Ticket。

Oauth

Oauth 可以参考飞书文档: (Login Process)[https://open.feishu.cn/document/common-capabilities/sso/web-application-sso/web-app-overview]

emm,似乎没什么好说的(

接口都可以在 apifox 里查看。我懒得导出了

oauth 认证 /oauth2/authorize

Oauth 认证流程如下(获取授权码 (authorization code) ):

+----------------------------+
|                            |
|   HandleAuthorizeRequest   |
|                            |
+------------+---------------+
             |
             |
             v
+------------+---------------+
|                            |
|   ValidationAuthorizeReques|
|                            |
+------------+---------------+
             |
             |
             |
             v
+------------+---------------+
|                            |
|   UserAuthorizationHandler |
|                            |
+------------+---------------+
             |
             |
             |
             v
+------------+---------------+
|                            |
|      Get the scope of      |
|       authorizetion        |
+------------+---------------+
             |
             |
             v
+------------+---------------+
|                            |
|   specify the expiration   |
|    time of access token    |
+------------+---------------+
             |
             |
             v
+------------+---------------+
|                            |
|    Redirect to client      |
|                            |
+----------------------------+

这个接口用于认证,如果用户登录过 sast link,则直接跳转到 /oauth2/auth 页面让用户授权, 如果没有登录过,则跳转到登录页面那边 /verify。登录之后再跳转到授权页面(这里应该需要与前端协调)。

用户授权之后会再次跳转到这个接口,从这个接口获取 authorize code 然后跳转到客户端初始给我们的 redirect_uri

之后就是客户端后端该干的事了,客户端后端会使用我们传过去的 authorize code 获取 access token

获取 Access Token /oauth2/token

这个接口用于获取 access token。只能给客户端后端使用。

刷新 token /oauth2/refresh

刷新 access token。刷新的逻辑与获取的逻辑差不多,只是会直接返回一个 access token 给客户端。

还有一些接口就不说了吧。