[내일배움캠프] #211206 💻 TIL 💻

이수영·2021년 12월 6일
0

MY TIL 

목록 보기
46/50
post-thumbnail

📚 SpringBoot

✍🏻 카카오 로그인

  • 나는 카카오 메시지 api 를 사용하기 위해 카카오 로그인 api를 사용한다
  • 카카오로그인을 통해서 토큰을 발급받아야함

📌 Spring Security 로그인의 동작원리

  • 기본적으로 필터기반으로 동작
  • 클라이언트의 Http Request가 특정 Filter 조건에 부합하면 Filter 동작한다. 로그인도 이와 같이 Spring Security의 UsernamePasswordAuthenticationFilter 라는 필터에 의해 동작한다.

📌 OAuth

사용자가 애플리케이션에게 모든 권한을 넘기지 않고 사용자 대신 서비스를 이용할 수 있게 해주는 HTTP 기반의 보안 프로토콜

📌 OAuth2 인증과정

1. 인증코드 요청

  • 웹 등록 정보로 카카오 로그인 페이지를 띄움
  • 카카오 로그인 완료 시 연동화면이 나오고 동의롤 통해 카카오계정과 웹을 연결
  • 로그인에 성공하면 콜백페이지(redirect url)가 자동 리다이렉트 되고 우리는 url에서 인가코드를 가져오면 된다
    => 카카오가 대신 로그인을 통해 회원을 검증해주고 Authorization code를 발급해서 redirect url 로 돌려주게됨

2. 위에서 받은 인증코드를 이용해 access_token 요청

3. 위 과정에서 받은 access_token 을 이용해 resource 접근

  • 나의 서비스는 access_token 으로 카카오서버에 사용자 정보를 요청하고 값을 가져올 수 있으면 JWT를 발급시켜준다

✍🏻 카카오톡 메시지 api

오류 1

error response : {"msg":"too long for access token.","code":-2}
  • 제대로 된 access 토큰을 안쓴 문제 ... ^^
  • access_token 을 발급받고 local_storage 에 저장
function kakao_login() {
        Kakao.Auth.login({

            success: function(authObj) {
                let access_token=authObj['access_token'];
                $.ajax({
                    type: 'POST',
                    url: `/login/kakao`,
                    contentType: "application/json",
                    data: JSON.stringify({'token':access_token}),
                    success: function (response) {
                        localStorage.setItem("access_token",access_token);
                        localStorage.setItem("token", response['token']);
                        localStorage.setItem("username", response['username']);
                        location.href = '/';
                    }
                })
            },
            fail: function(err) {
                alert(JSON.stringify(err))
            },
        })
    }
  • access_token으로 저장해두고 필요할 때 사용
profile
Hongik Univ 💻

0개의 댓글