|
| 1 | +- 세션과 토큰의 차이는? |
| 2 | + |
| 3 | + ### 세션 |
| 4 | + |
| 5 | + 비밀번호 등 클라이언트의 민감한 인증 정보를 브라우저가 아닌 서버 측에 저장하고 관리한다. |
| 6 | + |
| 7 | + ⇒민감정보는 서버에서 모두 관리한다. |
| 8 | + |
| 9 | + - 세션 객체 |
| 10 | + - key : SESSION ID |
| 11 | + - value : 세션 생성 시간, 마지막 접근 시간, 속성 등 |
| 12 | + - 인증 과정 |
| 13 | + - 유저가 로그인 → 서버 상에 저장 |
| 14 | + - 서버에서 브라우저에 쿠키에다가 Session ID 저장 |
| 15 | + - 브라우저는 해당 사이트에 대한 모든 Request에 Session ID를 쿠키에 담아 전송 |
| 16 | + - 서버는 클라이언트가 보낸 Session ID와 서버 메모리로 관리하고 있는 Session ID를 비교하여 인증을 수행 |
| 17 | + - 장단점 |
| 18 | + - stateful 특징을 가진다. |
| 19 | + - 세션 ID 자체를 탈취하여 클라이언트인 척 위장 가능성 |
| 20 | + - 서버에서 세션 저장소를 사용하므로 요청이 많아지면 서버에 부하가 심해진다. |
| 21 | + |
| 22 | + ### 토큰 |
| 23 | + |
| 24 | + 클라이언트가 서버에 접속하면 서버에서 인증되었다는 의미로 해당 클라이언트에 토큰을 부여하는 방식이다. |
| 25 | + |
| 26 | + ⇒토큰은 유일하다. |
| 27 | + |
| 28 | + - 인증 과정 |
| 29 | + - 로그인 → 서버 접속 → 클라이언트한테 토큰 부여 |
| 30 | + - 클라이언트가 토큰을 쿠키나 스토리지에 저장 |
| 31 | + - 서버에 요청 시 헤더에 토큰 심어서 보낸다. |
| 32 | + - 서버는 받은 토큰을 자기가 제공한 토큰과 일치한 지 체크한다. |
| 33 | + - 장단점 |
| 34 | + - 서버의 부담이 줄어든다. |
| 35 | + - stateless 특징을 가진다. |
| 36 | + - 인증 요청이 많아질수록 네트워크 부하가 심해질 수 있다. |
| 37 | + - Payload 자체는 암호화되지 않기 때문에 유저의 중요한 정보는 담을 수 없다. |
| 38 | + - 토큰 탈취 시 대처가 어렵다. |
| 39 | + |
| 40 | + |
| 41 | +- 엑세스 토큰과 리프레시 토큰이란? |
| 42 | + |
| 43 | + ### Access Token |
| 44 | + |
| 45 | + 클라이언트가 갖고 있는 실제로 유저의 정보가 담긴 토큰으로, 클라이언트에서 요청이 오면 서버에서 해당 토큰에 있는 정보를 활용 |
| 46 | + |
| 47 | + - 장단점 |
| 48 | + - Access Token이 탈취되면 토큰이 만료되기 전까지, 토큰이 있는 사람은 누구나 권한 접근이 가능해진다. |
| 49 | + |
| 50 | + ### Refresh Token |
| 51 | + |
| 52 | + 새로운 Access Token을 발급해주기 위해 사용하는 토큰으로 짧은 수명을 가지는 Access Token에게 새로운 토큰을 발급해주기 위해 사용. 데이터베이스에 유저 정보와 같이 기록 |
| 53 | + |
| 54 | + ⇒ 똑같은 JWT 토큰이지만 행하는 역할이 다르다. |
| 55 | + |
| 56 | + - 인증 과정 |
| 57 | + - 로그인 → Access Token, Refresh Token 모두 발급 |
| 58 | + (refresh token만 서버 측 DB에 저장) |
| 59 | + - 사용자가 인증이 필요한 API에 접근하고자 하면, 가장 먼저 토큰을 검사한다. |
| 60 | + - access token, refresh token 모두 만료된 경우 |
| 61 | + → 에러 발생(재로그인하여 둘 다 새로 발급) |
| 62 | + - access token 만료, refresh token 유효 |
| 63 | + → refresh token을 검증하여 access token 재발급 |
| 64 | + - access token 유효, refresh token 만료 |
| 65 | + → access token을 검증하여 refresh token 재발급 |
| 66 | + - access token, refresh token 모두 유효 → 정상 |
| 67 | + - 로그아웃을 하면 Access Token, Refresh Token을 모두 만료 |
| 68 | + |
| 69 | +- OAuth 1.0과 OAuth 2.0의 차이는? |
| 70 | + |
| 71 | + ### OAuth: Open Authorization |
| 72 | + |
| 73 | + 인터넷 사용자들이 비밀번호를 제공하지 않고, |
| 74 | + 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 |
| 75 | + 부여할 수 있는 공통적인 수단으로 사용되는 접근 위임을 위한 개방형 표준입니다. |
| 76 | + |
| 77 | + - 장단점 |
| 78 | + - 연동되는 외부 Web Application 에서 카카오톡, Google, Github 등이 |
| 79 | + 제공하는 기능을 간편하게 사용할 수 있다. |
| 80 | + |
| 81 | + - OAuth 1.0 |
| 82 | + - 총 고객, 고객을 이용하려는 애플리케이션, 고객 정보를 가지고 있는 애플리케이션 |
| 83 | + 이렇게 3개가 상호작용하는 형태이다. |
| 84 | + - 장단점 |
| 85 | + - 구현이 복잡하다 → 암호화를 하는 번거로움 |
| 86 | + - 인증토큰이 만료 되지 않아 토큰을 만료하려면 애플리케이션의 비밀번호를 바꿔야 함. |
| 87 | + |
| 88 | + - OAuth 2.0 ⇒ 간소화된 인증 프로토 |
| 89 | + - 기능의 단순화, 기능과 규모의 확장성 등을 지원하기 위해 만들어졌다. |
| 90 | + - 다양한 인증 방식이 제공된다. |
| 91 | + - https 이용 |
0 commit comments