-
Notifications
You must be signed in to change notification settings - Fork 3
General
此处页面用于梳理流程。
梳理一下 SAST Link 的登录注册流程。
SAST Link 的注册分为以下几步:
这一步会验证帐号是否已经注册过,也就是看我们的数据库中是否有这个帐号。如果没有则允许注册。
其中这个接口属于/verify/account
路径,属于 api -> v1 -> user.go
文件中的 VerifyAccount
函数,关于接口的定义及参数请查看 API-Doc.md(API 文档)。
在这一步之后我们会给用户签发一个 Token,这个 Token 在后面会起作用。实际上这里的 Token 在我们的代码中是被叫做 Ticket 的,来自windpo。
上一步通过之后,会发送验证码给用户邮箱。但是这个接口需要使用 Token 验证,请查看 Api 文档。
这一步会更新 Ticket,将 Ticket 在 redis 中的 value 更新,以说明这个用户这一步已完成。下面的每一步也是这样。
发送验证邮件之后,需要验证验证码,这也是单独的一个接口,同样的,这个接口也需要使用第一步签发的 Token 进行验证,同时也会验证验证码是否正确。
以上步骤完成之后,真正进入注册步骤,这一步只需要填写密码,但是也是需要第一步的 Token 进行验证。
以上的 Token 会在每一步之后会在 redis 中进行更新,以记录用户的执行步骤。Token 会存储用户名。
登录时也需要验证帐号有效性,与注册使用的是同一个接口,只是其中有个 flag
参数不同,详情请查看 Api 文档。
这一步同样会给用户签发一个 Ticket,用于用户登录。这里的 Ticket 被称为 LOGIN_TICKET。
这个接口接受一个 password
的参数和一个 LOGIN_TICKET
的 Ticket。
Oauth 可以参考飞书文档: (Login Process)[https://open.feishu.cn/document/common-capabilities/sso/web-application-sso/web-app-overview]
emm,似乎没什么好说的(
接口都可以在 apifox 里查看。我懒得导出了
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
。只能给客户端后端使用。
刷新 access token
。刷新的逻辑与获取的逻辑差不多,只是会直接返回一个 access token
给客户端。
还有一些接口就不说了吧。