EVE ESI 로그인 흐름

kukudas·2022년 2월 27일
0

industry-app-client

목록 보기
1/11

1. 앱이 유저를 EVE SSO가 제공하는 로그인 페이지로 리다이렉트 해줌.

유저를https://login.eveonline.com/v2/oauth/authorize/로 리다이렉트 해주는데 여기에 아래 parameter들을 쿼리스트링으로 넣어주고 모든 스트링은 URL encode 해줘야함.

  • response_type=code :
    EVE SSO 한테 어떤 종류의 reponse를 기대한다고 알려줌. 지금은 authorization code를 받기 위해서 handshake한다고 알려줌.
  • redirect_uri=<your application's defined callback> :
    = 뒤로 나오는 텍스트를 EVE SSO 앱에 정의한 내 콜백 URL로 바꿔주는데 URL을 encode해서 넣어줘야함.(e.g https%3A%2F%2Flocalhost%2Fcallback%2F)
    EVE SSO 앱에 정의된 콜백 URL이 아닌 다른 URL이 오면 EVE SSO가 request를 거절함.
  • client_id=<your application's client ID> :
    = 뒤로 나오는 텍스트를 EVE SSO 앱을 만들면서 발급받은 Client ID를 그대로 넣어줌.
  • scope=<A URL encoded, space delimited list of ESI scopes you would like to request permissions for> :
    = 뒤로 나오는 텍스트를 esi 스코프마다 공백 한 칸으로 구분해서 URL encode해서 넣어줌.
    예를 들어서 characters.read_blueprints.v1, esi-corporations.read_contacts.v1 두 개의 scope로 키를 요청하면 scope=esi-characters.read_blueprints.v1%20esi-corporations.read_contacts.v1를 넣어주면 됨.
  • state=<something-unique> :
    = 뒤로 나오는 텍스트를 내 맘대로 아무 스트링으로 넣어주면 됨. state는 EVE SSO에 보안을 추가하기 위해 사용하는 거임. 여기 를 보면 state 패러미터를 어떻게 사용하는지 알 수 있음.

예를 들어서 케릭터의 블루프린트에 접근하고자 한다고할때 콜백 URL이 https://localhost/callback/면 리다이렉트 해줄 URL은 아래와 같음. <>안은 <>를 포함해서 내꺼로 바꿔야함.

https://login.eveonline.com/v2/oauth/authorize/?
response_type=code&
redirect_uri=https%3A%2F%2Flocalhost%2Fcallback%2F&
client_id=<your-client-id>&
scope=esi-characters.read_blueprints.v1&
state=<unique-string>

2. 유저가 로그인 특정한 이브 케릭터로 로그인하면 SSO는 앱의 콜백 URL(앱 만들때 정의했음)로 5분동안 유효한 일회용 authorization code를 GET request로 보냄.

3. EVE SSO에서 authorization code를 받으면 앱은 받은 인증코드를 포함해서 다시 SSO로 request를 보냄.

4. 3번이 성공하면 SSO는 20분짜리 access token과 refresh token(access token 재발급 할때 사용)을 보내줌. 이 access token과 refresh token은 2번에서 정의한 ESI scope에만 유효함.

5. 앱은 이제 이 access token으로 유효한 ESI scope에 접근할 수 있음.

6. access token이 20분이 지나서 만료되면 앱은 3번으로 가서 SSO로 authorization code 대신에 refresh token을 보내서 access token을 재발급 받음.

출처 출처2

0개의 댓글