GIST 학생들의 계정을 한 곳에서 관리하여 GIST구성원들이 사용할 수 있는 여러 서비스에 쉽게 로그인을 할 수 있도록 하는 Id Provider Server를 만드는 것이 InfoTeam IdP의 목적입니다.
본 서비스는 GIST구성원을 대상으로 하는 서비스이므로, gist구성원에게 기본적으로 지금되는 @gist.ac.kr 혹은 @gm.gist.ac.kr이메일이 필수적으로 있어야지 로그인이 가능합니다.
본 서비스는 Oauth2 프로토콜을 이용해서 구현을 하였습니다. 따라서 본 서비스 로직의 더 자세한 정보를 알고 싶다면, 해당 문서를 참고하시기 바랍니다. DOCS
sequenceDiagram
participant IdP Frontend
participant Client Frontend
participant Client
participant IdP
critical Requesting Login
Client Frontend ->> Client:
Client ->> IdP Frontend:
end
IdP Frontend ->> IdP Frontend: login or signup
IdP Frontend ->>+ IdP: Client_id, redirect_uri, scope, response_type
note right of IdP: POST /oauth/authorize
IdP ->>- IdP Frontend: code
IdP Frontend ->> Client Frontend: REDIRECT redirect_uri?code={code}
Client Frontend->>+ Client: code
Client ->>+ IdP: Client_id, Client_secret, code, redirect_uri, grant_type
note right of IdP: POST /oauth/token
IdP ->>- Client: AccessToken or RefreshToken
Client ->> Client: Service logic
Client ->>- Client Frontend: AccessToken or RefreshToken
alt get user info
Client Frontend ->>+ Client: AccessToken
Client ->>+ IdP: AccessToken
note right of IdP: GET oauth/userinfo
IdP ->>- Client: User info
Client ->>- Client Frontend: User info
else revoke token
Client Frontend ->> Client: AccessToken or RefreshToken
Client ->> IdP: AccessToken or RefreshToken
note right of IdP: POST /oauth/revoke
end
API DOCS는 swagger로 구현되어있으며, 각 문서는 아래의 페이지에서 확인할 수 있습니다.
Production: https://api.idp.gistory.me/api
Staging: https://api.stg.idp.gistory.me/api
Database structure는 dbdocs로 구현되었으며, 문서는 아래의 링크에서 확인할 수 있습니다.