# 是時候研究一下 OAuth 2.0 ###### tags: `note`, `forMyself` > 07/13 記 ### def > 以我們 ncufresh 為例 - **Resource Owner**: 使用者 - **Resource Server**: portal - **Client**: browser 上的 code - **Authorization Server**: 我們的 backend(express) ```graphviz digraph { resourceOwner [label="Resource Owner"] resourceServer [label="Resourcer Server"] client [label="Client"] AuthServer [label="Authorization Server"] } ``` ``` +--------+ +---------------+ | |--(A)- Authorization Request ->| Resource | | | | Owner | | |<-(B)-- Authorization Grant ---| | | | +---------------+ | | | | +---------------+ | |--(C)-- Authorization Grant -->| Authorization | | Client | | Server | | |<-(D)----- Access Token -------| | | | +---------------+ | | | | +---------------+ | |--(E)----- Access Token ------>| Resource | | | | Server | | |<-(F)--- Protected Resource ---| | +--------+ +---------------+ ``` [上圖 ref](https://blog.yorkxin.org/posts/oauth2-1-introduction.html) ```sequence user -> nuxt: req: get(login) note over nuxt: pages/login.vue nuxt -> user: res: redirect to express/login note over user: redirecting user -> express: req: get login note over express: router.get(/login) express -> user: res: redirect to portal/login note over user: redirecting user -> portal: req: get login note over portal: insided portal portal -> user: res: cookie/token, and redirect to express/auth note over user: redirecting user -> express: req: get /auth note over express: router.get(/auth) express -> user: res: redirect to nuxt/login note over user: redirecting user -> nuxt: req: get /login ``` ```javascript= // may be session table? // may be we need to give the client a cookie after '/auth' let sessionTable = { studentNumber: 108502585, name: 'aaa', } let db = { studentNumber: 123, someData: 'aaa'. } ```