Backend 개발을 하다보면 인증방식을 결정해야 되는 순간이 꼭 있다.
서버와 서버간의 인증
서버와 모바일 서버
아니면 유저가 api서버를 가져다 쓸 때 의 인증 등등..
Backend 서버에서 제공해주는 정보를 가져다 쓸 때 인증이 필수 라고 볼 수 있다.
매 HTTP 요청마다 본인이 누구인지 알 수 있는 인증정보를 요청에 포함 시켜 요청해야한다.
그런데 현업에서는
다양한 아키텍쳐와 비지니스 로직이 있기 때문에
그러한 범위내에서 과연 수많은 인증 방식 중에서 어떤 인증 방법을 택하면 좋을까?
란 고민을 하게된다.
어떤 인증 방식을 택하면 좋을지? 를 결정하려면
당연히 어떤 인증방식이 있는지 알면 되지 않을까,,,,
란 답으로 시작해서 이번 포스팅을 하게 되었다.
(사실 보안이나 여러가지 개념이 너무너무 헷갈렸다 ^_^; 이러면서 배우는거쥐 뭐~)
그리고 Spring Security와 결부시켜서도 얘기해보겠다.
1. id + password 방식
가장~~~ 기본이 되고 간단한 방식이다.
그냥 DB에 있는 id와 password 를 요청에서 넣어준 값과 같은지 확인하는 방식이다.
여기서 한단계 더 나아가면 password를 암호화정도 하면 되겠다.
Spring Security에서도 이부분이 Default인 방식으로 볼 수 있다.
화면 Form에 그냥 id + password 를 담아서 넣어주면 인증이 된다.
2. Basic Auth
Basic Auth 도 간단한 방법인데
id:password 이 값을 base64로 인코딩한 값을 HTTP 헤더에 담아서보내주면 된다.
Authorization : Basic Base64(id:password)
ex) Authorization : Basic VGVycnk6aGVsbG8gd29ybGQ=
앞에 Basic을 붙여줘야한다!
중간에 패킷을 가로채서 이 헤더를 Base64로 디코딩 하면 id, password가 그대로 노출되기때문에 HTTPS를 쓰는 것을 권장한다.
3. JWT ( JSON Web Token)
JWT 는 . 을 구분자로 3가지의 문자열로 되어있습니다.
aaaaaaa.bbbbbb.cccccc
header
payload
signature
이 각각 세 파트를 각각 다른 방법으로 인코딩하여 HTTP 헤더에 정보를 담아서 넘겨준다.
참고
https://sanghaklee.tistory.com/47
4. OAuth
방식은 다섯가지로 grant type이라고 한다.
요새 가장 많이 쓰는 방법이다.
참고
https://hyeonyeee.tistory.com/48
5. SAML ( Security Assertion Markup Language)
SSO( Sing Sign On) 이 필요할 때 많이 쓰는 인증방식이다.
즉 한번 로그인하면 다른 사이트나 다른 서버에서도 인증이 되는것이다.
하나의 인증으로 다 통합된다는것이다
얼마나 편리한가,, 사실 이 안의 개념도 엄청 복잡하다.
따로 포스팅 해도 될정도
ㅎㅎ간단히 보면 이정도 되겠다..
요새는 OAuth나 SAML을 가장 많이 쓰는거 같다.
그래서 그런지 이 두개를 비교하는 포스팅도 많다.
Spring Security는 그러면 이 모든 걸 다 제공한다^^
얼마나 방대한가.. ㅎㅎ;
사실 이 인증 방식과 Spring Security의 개념이 좀 혼동 되었었는데
이번에 정리 하고 넘어가서 좋다 ^^77
화이팅!
안의 포스팅은 차차.. 내용을 더 채워 나가도록 하겠다
'DEVELOP' 카테고리의 다른 글
강화학습이란? ( feat. 지도학습) (1) | 2020.10.30 |
---|---|
리눅스 alias 등록 방법 (0) | 2020.05.18 |
Feign 사용법 ( Neflix의 Rest Client 라이브러리) API GET/POST 하기~ (0) | 2020.03.12 |
OSI 7 계층 이해하기!! (0) | 2020.01.21 |
OAuth 2.0이란? (0) | 2020.01.06 |