OAuth
[Spring] 스프링 소셜 로그인 OIDC 방식으로 구현하기 (OAuth with OpenID Connect)
📌 OpenID Connect (OIDC) 는 무엇인가? OAuth 2.0 프로토콜을 기반으로 한 사용자 인증 프로토콜 accessToken 이외에도 id_token을 사용하여 토큰으로 사용자가 누구인지 확인할 수도 있다. OIDC는 표준 프로토콜(스펙)이기 때문에 다른 OAuth 공급자와 호환된다. 보통 소셜 로그인 요청 시 scope 에 `open id` 를 추가해주면 엑세스 토큰과 리프레시 토큰 이외에 id token 을 추가로 응답해준다. 🔗 공개 키 가져오기 각 OAuth Provider 들은 공개키 목록의 JSON 파일을 제공한다. 구글, 카카오, 애플의 공개키 목록 url 은 다음과 같다. 📌 Google https://www.googleapis.com/oauth2/v3/certs 📌 Kak..
[Spring] 스프링 애플 로그인 구현하기 (Sign in with Apple OIDC)
악명이 높기로 소문난 애플 로그인 구현하기 공식 Docs 도 너무 불친절하고 자료도 별로 없어서 애먹었지만 무한한 삽질을 통해 입맛에 맞게 완성시켜 보았다. 엑세스 토큰이 아닌, OIDC(Open ID Connect)의 id_token 방식을 사용하여 구현했다. id_token 방식의 경우 이슈어와 앱키 등의 정보가 들어있어 검증 및 로그인 세션을 유지할 수 있게 도와준다. 특히 이는 회원 가입시 OAuth 에서 제공하지 않는 정보의 추가 기입이 필요할 때 유용하게 사용할 수 있다. 📚 Dependency implementation 'com.nimbusds:nimbus-jose-jwt:3.10' client secret 을 생성하기 위한 jwt 관련 라이브러리 📌 Apple Developers 설정 애플..
[Spring] 스프링 시큐리티 + JWT로 카카오 로그인 구현하기, 프론트엔드와 연결
지난 번에 DefaultOAuth2Service 를 상속하여 스프링 시큐리티에 등록하는 방식으로 카카오 로그인을 구현해보았다 하지만 이런 식으로 하게 되면 스프링 내장 함수을 이용하면서 편리하게 구현을 할 수는 있지만 구조가 너무 추상적이고 컨트롤러에서 통제하기가 어려웠다 그래서 이번에는 OAuth 인증 과정의 본질을 뜯어보면서 하나하나 구현해보았다 💾 이전 글 (DefaultOAuth2Service 이용) https://gengminy.tistory.com/39 [Spring] OAuth2Service + 스프링 시큐리티 + JWT로 카카오 로그인 구현하기 📌 OAuth "OpenID Authorization"의 약자 비밀번호를 제공하지 않으면서 웹사이트나 어플리케이션 접근 권한을 부여할 수 있는 로그..
[Spring] OAuth2Service + 스프링 시큐리티 + JWT로 카카오 로그인 구현하기
📌 OAuth "OpenID Authorization"의 약자 비밀번호를 제공하지 않으면서 웹사이트나 어플리케이션 접근 권한을 부여할 수 있는 로그인 방식 기존 아이디와 비밀번호를 통한 로그인 방식은 보안상 취약한 점이 아주 많다 그러나 OAuth 를 사용하면 특정 접근 권한만 부여할 수도 있고 강력한 보안을 제공하는 대기업에 사용자 인증과 인가를 위임하는 방식으로 안전하게 로그인할 수 있다 🏛 Dependency implementation group: 'org.springframework.security', name: 'spring-security-oauth2-client', version: '5.6.3' build.gradle 에 OAuth 관련 의존성을 추가해준다 🚀 Kakao Developers ..