Reference

Spring API서버에서 Apple 인증(로그인 , 회원가입) 처리하기

요약

revoke api에 사용될 token(=Refresh token)값과 client secret값을 구해야한다.

Untitled

  1. identity token(apple login 성공시 클라에서 주는 그 값) 위변조 체크 작업 → 안해도 기능상 문제는 없지만 보안상 필요한 과정인 것 같습니다.
  2. 앱으로부터 받은 identity token과 apple의 public key api와 비교해서 위변조 체크
  3. refresh token 발급
  4. client_secret
  5. apple developer key를 사용해서 private key 생성
  6. 아래 형태의 client secret을 별도로 생성
{
    "alg": "ES256",
    "kid": "ABC123DEFG"
}
{
    "iss": "DEF123GHIJ",
    "iat": 1437179036,
    "exp": 1493298100,
    "aud": "<https://appleid.apple.com>",
    "sub": "com.mytest.app"
}
alg는 ES256를 사용한다.
kid는 Apple Developer 페이지에 명시되어있는 Key ID 이다.
iss는 Apple Developer 페이지에 명시되어있는 Team ID 이다. (우측 상단에 있음.)
iat는 client secret이 생성된 일시를 입력한다. (현재시간을 주면 된다)
exp는 client secret이 만료될 일시를 입력한다. (현재시간으로 부터 15777000초, 즉 6개월을 초과하면 안된다.)
aud는 "<https://appleid.apple.com>" 값을 입력한다.
sub는 위에서 얘기한 client_id 값을 입력한다. com.xxx.xxx 와 같은 형식이다.

이렇게 해서 받은 refresh token을 revoke api의 code파라미터로 넣어주고, client secret도 2-a에서 구한 값으로 넣어줘서 요청을 보내야 합니다.

내용 정리를 좀 더 해서 협업 요청을 드려야할 것으로 보입니다.

인증과정