[스프링(spring)]인증인가

allnight5·2022년 12월 12일
0

스프링

목록 보기
9/62

스프링 시큐리티(인증 인가를 관리해주는것)
아직 작성중
즉 인증(Authenticate, 누구인지?) 과 인가(Authorize, 어떤것을 할 수 있는지?)를 담당하는 프레임워크를 말합니다
프로토콜에서 인증을 통과했다는 사실의 상태를 어떻게 유지시킬것인가

쿠키-세션 방식의 인즘

서버가 특정 유저가 로그인 되었다는 상태를 저장하는 방식
인증의대한 정보를 아주 약간만 서버가 가지고있고
유저는 인증과 관련된 최선의 정보를 저장해서 로그인을 유지한다.

인증방식

  1. 사용자가 로그인 요청을 보냅니다.
  2. 서버는 DB의 유저 테이블을 뒤져서 아이디 비밀번호를 대조해봐야겠죠?
  3. 실제 유저테이블의 정보와 일치한다면 인증을 통과한 것으로 보고 “세션 저장소”에 해당 유저가 로그인 되었다는 정보를 넣습니다.
  4. 세션 저장소에서는 유저의 정보와는 관련 없는 난수인 session-id를 발급합니다.
  5. 서버는 로그인 요청의 응답으로 session-id를 내어줍니다.
  6. 클라이언트는 그 session-id를 쿠키라는 저장소에 보관하고 앞으로의 요청마다 세션아이디를 같이 보냅니다. (주로 HTTP header에 담아서 보냅니다!)
  7. 클라이언트의 요청에서 쿠키를 발견했다면 서버는 세션 저장소에서 쿠키를 검증합니다.
  8. 만약 유저정보를 받아왔다면 이 사용자는 로그인이 되어있는 사용자겠죠?
  9. 이후에는 로그인 된 유저에 따른 응답을 내어줍니다.

JWT(Json Web Token)방식의 인증

인증에 필요한 정보들을 암호화 시킨 토큰방식으로
쿠키-세션과 유사하게 암호화된 토큰을 HTTP헤더이 실어 서버가
클라이언트를 식별할수 있도록 한다.
암호화된 알고리즘으로
해독하면 세부분이 되는데
1.HEADER 2. PAYLOAD 3. VERIFY SIGNATURE부분으로 나눠진다.
1번과 3이 암호화된 정보의 양식이고
2번이 유저의 정보가 들어간다

관리자 인가방식 관리자 가입 토큰 필요

인증방식

  1. 사용자가 로그인 요청을 보냅니다.
  2. 서버는 DB의 유저 테이블을 뒤져서 아이디 비밀번호를 대조해봐야겠죠?
  3. 실제 유저테이블의 정보와 일치한다면 인증을 통과한 것으로 보고 유저의 정보를 JWT로 암호화 해서 내보냅니다
  4. 서버는 로그인 요청의 응답으로 jwt 토큰을 내어줍니다.
  5. 클라이언트는 그 토큰을 저장소에 보관하고 앞으로의 요청마다 토큰을 같이 보냅니다.
  6. 클라이언트의 요청에서 토큰을 발견했다면 서버는 토큰을 검증합니다.
  7. 이후에는 로그인 된 유저에 따른 응답을 내어줍니다.
profile
공부기록하기

0개의 댓글