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

 

화이팅!

 

안의 포스팅은 차차.. 내용을 더 채워 나가도록 하겠다 

 

 

 

 

 

 

+ Recent posts