인증 / 인가

HS L·2023년 4월 20일
0

내일배움캠프

목록 보기
35/73

어떤 웹 사이트를 이용하는 과정에서 기능마다 다르겠지만 로그인상태에 따라 접근할 수 있는 api의 범위가 달라진다.
서버-클라이언트 통신방식은 연결상태를 유지하는 것이 아니라 클라이언트가 서버에 요청을 보내게 되고, 서버에서 클라이언트의 요청방식에 따라 처리한 응답을 클라이언트로 보내주고 연결을 끊게 된다.

각각의 연결은 독립적으로 성립되기에 로그인을 하고(첫번재 서버-클라이언트 통신) 새로운 요청을 보낼게 됐을때(두번째 서버-클라이언트 통신) 클라이언트의 로그인상태를 알 수가 없다(첫번째 통신에서 로그인을 했지만, 두번째 통신은 새로운 통신이기 때문에).
때문에 클라이언트는 매 요청마다 로그인을 해줘야 하는.. 비효율적인 반복을 해야하는 상황이 발생하게 된다.

이런 경우들을 해결하기 위해 로그인 후 다음 요청에서 로그인 한 클라이언트 라는 것을 서버가 알 수 있도록 토큰, 세션의 방식이 있다.

인증 / 인가

인증과 인가는 비슷하지만 엄밀히 말하면 다른 보안 프로세스이다.

인증

사용자의 토큰, 세션발급을 위해 신원을 확인하는 보안 프로세스에서 첫번째 단계이다. 대표적인 인증요소로는 비밀번호, 생체인식 등이 있다.

인가

사용자에게 특정 리소스나 기능에 엑세스 할 수 있도록 권한을 부여하는 프로세스이다. 사용자에 따라서 권한의 범위가 달라질 수 있고 개인의 권한도 변동될 수도 있다. 예로 로그인한 사용자만 글을 작성하게 하는 것도 인증 후 인가를 받는 과정을 거친 것으로 인가는 인증 후에 이루어 져야 한다.

참고 링크

세션

로그인 한 사용자라는것을 식별할 수 있도록 로그인시 서버에서 사용자의 DB를 메모리에 저장하고 세션 id를 사용자에게 내어준다. 사용자는 다음 매 요청시 마다 받았던 세션 id를 같이 보내게 되고 이를 통해 서버에서는 받은 세션id와 메모리상의 DB를 비교해 어떤 사용자인지를 식별한다.

토큰

메모리상에 저장하는 세션방식과는 다르게 로그인시 서버에서는 사용자를 인증하고 토큰 생성 알고리즘을 통해 사용자에게 토큰을 발급한다. 사용자는 다음 매 요청시마다 발급받은 토큰을 같이 보내고 서버에서는 토큰 검증 알고리즘을 통해 어떤 사용자인지를 식별한다.


참고링크

profile
식이

0개의 댓글