[Security] SpringBoot Security & JWT - JWT(2)
·
Back-End/Security
[작성일: 2023. 09. 22] jwt를 위한 강제 로그인 진행username과 password를 받는 것을 확인하기 위해 JwtAuthenticationFilter 클래스에서 코드를 수정한다. // 로그인 요청을 하면 로그인 시도를 위해 실행되는 함수@Overridepublic Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException { System.out.println("JwtAuthenticationFilter : 로그인 시도 중"); // 1. username, password 받아서 try { Bu..
[Security] SpringBoot Security & JWT - JWT(1)
·
Back-End/Security
[작성일: 2023. 09. 21] JWTJWT는 JSON Web Token이라고 불린다. JWT는 당사자간에 정보를 JSON 객체로 안전하게 전송하기 위한 컴팩트하고 독립적인 방식을 정의하는 개방형 표준이다. 이 정보는 디지털 서명이 되어 있으므로 확인하고 신뢰할 수 있다. JWT는 비밀(HMAC 알고리즘 사용) 또는 RSA를 사용하는 공개/개인 키 쌍을 사용하여 서명할 수 있다. JWT를 암호화해서 당사자간에 비밀을 제공할 수도 있지만 서명 된 토큰에 중점을 둔다. 서명된 토큰은 그 안에 포함 된 클레임(요구사항)의 무결성을 확인할 수 있는 반면 암호화 된 토큰은 다른 당사자로부터 여러한 클레임을 숨긴다.    JSON 웹 토큰 구조 xxxx.yyyy.zzzzHeaderPayloadSignature ..
[Security] SpringBoot Security & JWT - OAuth2.0_Naver
·
Back-End/Security
[작성일: 2023. 09. 19] 네이버 로그인 참고로 나는 페이스북이 가입이 되어있지 않고 사용할 일이 없을 거 같아서 구글과 네이버만 연동하려고 한다.페이스북 연동은 하지 않았지만 필요한 코드는 작성했다. 우선 google은 sub라는 id가 존재하지만 facebook과 naver은 sub가 존재하지 않는다. 그래서 username이 만들어질 때 sub에 null값이 들어가게 된다. 이 문제를 해결하기 위해 provider 클래스와 OAuth2Userinfo 인터페이스, 인터페이스를 구현할 GoogleUserInfo 클래스를 따로 만들어준다. public interface OAuth2UserInfo { String getProviderId(); String getProvider(); ..
[Security] SpringBoot Security & JWT - OAuth2.0_Google
·
Back-End/Security
[작성일: 2023. 09. 17] 구글 로그인우선 구글 OAuth 프로젝트를 만들고 OAuth 동의 화면(외부) ➡️ OAuth 클라이언트 ID 만들기 순서로 진행하면 된다.  승인된 리디렉션 URI에는 다음과 같은 주소를 넣어주면 된다. http://localhost:8080/login/oauth2/code/google 이 주소는 구글 로그인이 완료되고 나면 구글 서버쪽에서 인증이 되었다는 code를 돌려준다. 우리는 이 코드를 받아 access token을 요청할 수 있다. 이 token으로 사용자의 개인 정보에 접근할 수 있는 권한이 생긴다. 이 URI가 있기 때문에 컨트롤러를 따로 만들 필요가 없다.  그 다음 나는 gradle을 사용하기 때문에 gradle.build에 의존성을 추가하고, ym..
[Security] SpringBoot Security & JWT - 스프링 시큐리티
·
Back-End/Security
[작성일: 2023. 09. 16]   Security + JWT로 로그인을 구현한 경험이 있지만 동작되는 원리를 잘 이해하지 못해서 강의를 듣고 블로그에 정리하면서 공부하려고 한다.나중에 다시봐도 이해할 수 있게, 또는 Security에 대해 모르는 누가 봐도 이해할 수 있게 작성하는 것이 목표다. 환경설정강의가 나랑 다른 환경에서 진행되고 있기 때문에 무작정 따라하지 않고 나는 내 환경에 맞춰서 공부를 하려고 한다.    application.ymlthymeleaf로 바꾸면서 필요없을 거 같은 설정은 우선 다 제외했다.그리고 mysql로 되어있던 datasource 부분도 mariadb로 바꿔주었다. spring: datasource: driver-class-name: org.mariadb.j..