- Express.js
- PostgreSQL
- Nunjucks
npm install
docker-compose up -d
npm run setup
GOOGLE_CLIENT_ID=<GOOGLE_CLIENT_ID> \
GOOGLE_CLIENT_SECRET=<GOOGLE_CLIENT_SECRET> \
FACEBOOK_CLIENT_ID=<FACEBOOK_CLIENT_ID> \
FACEBOOK_CLIENT_SECRET=<FACEBOOK_CLIENT_SECRET> \
npm start
link: https://oauth2-server.readthedocs.io/en/latest/model/overview.html#authorization-code-grant
generateAccessToken(client, user, scope, [callback])
generateRefreshToken(client, user, scope, [callback])
generateAuthorizationCode(client, user, scope, [callback])
*getAuthorizationCode(authorizationCode, [callback])
*getClient(clientId, clientSecret, [callback])
*saveToken(token, client, user, [callback])
*saveAuthorizationCode(code, client, user, [callback])
*revokeAuthorizationCode(code, [callback])
validateScope(user, client, scope, [callback])
*必備的 Function
-> *getClient (1st, get client data from db)
-> generateAuthorizationCode
-> *saveAuthorizationCode
-> *getClient (2nd)
-> *getAuthorizationCode
-> *revokeAuthorizationCode (Authorization Code 的任務完成)
-> validateScope (驗證使用者範疇)
-> *saveToken (儲存 token)
- client_id: Your client id
- client_secret: Your client secret
- refresh_token: Your refresh token
- grant_type: refresh_token
-> *getClient
-> *getRefreshToken
-> generateRefreshToken
-> *saveToken
- username: Your username
- password: Your password
- client_id: Your client id
- client_secret: Your client secret
- grant_type: password
-> *getClient
-> *getUSer
-> validateScope
-> *saveToken
- client_id: Your client id
- client_secret: Your client secret
- grant_type: client_credentials
-> *getClient
-> *getUserFromClient
-> validateScope
-> *saveToken
- 藉由上面的各種方式取得 Access Token
- 做資料操作時,在 Header 加入授權資訊
Authorization: Bearer <Accrss Token>
- 授權驗證無問題的話就會看到資料了
目前 Access Token 預設存活 15 分鐘
- 社群帳號登入機制為登入即註冊
- 帳號機制採用 Email 作為 Primary Key,無論何種登入方式,只要 Email 對了就可以登入。
- 實作 OAuth2 基本功能
- 使用 DB 儲存 token, code
- 設計與建立 User 資料表
- 使 Clinet 與 User 有關聯
- 使 Token 與 User 和 Client 有關聯
- 使用者註冊畫面
- Google, Facebook 登入註冊串接
- 使用者登入畫面
- 使用者個人管理畫面
- OAuth2 串接應用範例
- 伺服器整體儀表板畫面
- 逾期 Token, Auth Code 清除機制
- 伺服器部署腳本