웹페이지를 사용할때 로그인을 로그인을 해야 사용할 수 있는 기능과, 로그인을 하지 않으면 기능을 사용할 수 없는 기능이 있어서 사용하지 못했던 경험이 있을 것입니다.
이러한 로그인은 사용자의 개인정보를 다루는 부분이기 때문에 인가와 인증이라는 과정을 거쳐서 진행됩니다.
- 사용자가 아이디와 비밀번호를 입력하는 과정
- 백엔드에서 인증과 인가를 위해 데이터가 오고 가는 과정
- 권한있는 사용자임을 확인하고 웹페이지를 이용할 수 있는 추가 권한을 주는 과정을
Login Process라고 합니다.
- 사용자가 id와 비밀번호 정보를 입력합니다.
- 서버에서 사용자가 입력한 값을 받아 DB에 있는 값과 비교합니다.
- 값이 일치한다면 인증이 완료된 것으로 토큰을 발행합니다.
- 사용자는 Access Token과 Refresh Token을 전달 받습니다.
- 사용자는 인증이 완료되어 Token을 가지고 있으므로
권한이 필요한 페이지에서 Token을 이용하여 인가를 받을 수 있습니다.(회원 전용 기능을 이용할 수 있습니다)
- 비밀번호는 암호화되어 저장되어 있어야 하며, 입력받은 비밀번호는 단방향 암호화 하여 비교합니다.
(사용자 정보 보호를 위해 평문으로 된 비밀번호를 저장하지 않습니다)- Access Token은 탈취당하면 악용될 소지가 높기 때문에 짧은 시간안에 만료되도록 합니다.
- 사용자에게 지속적으로 권한을 부여하려 할때는 Refresh Token을 이용하여 짧은 만료기간의 Access Token을 재발행 하는 방식으로 보안을 유지합니다.