인증과 인가

lzlko·2022년 1월 23일
0

TIL

목록 보기
12/19

서비스를 이용할때 가장 기본이 되는 기능은 무엇일까?
그건 바로 회원가입이다.
회원가입을 통해 서비스를 이용하는 이용자를 파악할 수 있기 때문이다.

1. 인증

회원 인증에 필요한 것은 아이디, 이메일, 비밀번호 등 여러가지가 있지만
이 중에서 가장 중요한 것은 비밀번호이다.

비밀번호를 관리할때는 다른사람이 알 수 없도록 관리하고, 또한 이것을 암호화하도록 법적으로도 규정하고 있기 때문에 비밀번호 관리는 매우 중요하다.

비밀번호를 그러면 안전하게 저장하기 위해서는 어떻게 해야할까?

1) 해시함수 사용

해시함수를 이용해서 비밀번호를 수학적 연산을 통해 임의의 숫자와 알파벳으로 이루어진 결과값으로 바꿀 수 있습니다. 단방향이라서 해쉬화된 결과값만 보고 비밀번호를 유추하기는 매우 어렵습니다.
하지만, 같은 패스워드의 값을 넣으면 항상 같은 결과가 도출되기때문에 모든 해시값을 저장하고 이것을 유추해주는 사이트가 존재합니다.
그렇기 때문에 해시함수만으로는 안전하게 저장하는 것은 어렵습니다.

2) bcrypt 사용
해시함수만 사용했을 때의 단점을 보완하기 위해서 salting과 키스트레칭을 포함시켜 만들어진 해시 매커니즘

salting : 실제 정보 이외에 추가적으로 무작위 데이터를 더해서 해시 값을 계산하는 방법. salt는 비밀번호마다 모두 다르기 때문에 같은 비밀번호라도 해시값이 달라지게 된다.

키 스트레칭 : 기존 단방향 해시 알고리즘의 빠른 실행 속도가 취약점이 됐던것을 보완하기 위한 방법. 해시값을 계속 반복시켜서 결과값을 늘리는 방법입니다.

2.인가

해당 유저가 권한이 있는지 확인하는 절차


1) JWT(json web token)


헤더, 내용, 서명으로 이루어져 있습니다.
헤더에는 토큰의 타입과 해시알고리즘의 정보가 들어갑니다.
내용에는 토큰에 담을 클레임 정보를 포함하고 있습니다.
서명에는 말그대로 서명, 암호화를해서 저장합니다.
유저아이디별로 토큰이 달라진다.
JWT의 장점은 사용자 인증에 필요한 모든 정보는 토큰 자체에 포함하기 때문에 별도의 인증 저장소가 필요 없습니다.

0개의 댓글