반응형
SMALL
반응형
LIST
대상 독자서버에서 파이어베이스 SDK 기능은 인증 용도로만 쓰는 경우개요사이드 프로젝트를 진행하면서 불필요한 과금이 발생하지않는 활성 사용자수 5만 달성 이전까지 자체 JWT가 아닌 Firebase 인증방식을 채택하기로 했습니다. OAuth2를 통해 필요한 정보가 없는 프로젝트여서 가능했습니다. 만약 OAuth2로 사용자 정보 (CI정보 등), 제공 기능이 필요하다면 firebase 인증방식이 아니라 실제 OAuth2 로그인을 구현했을 것입니다. 많은 블로그에서 Admin SDK를 활용하는 예제는 많으나, 해당 방식으로 필터를 구현할 경우 추후 자체 인증 서버에 의존하게 될 때 변경사항이 많이 발생합니다. Firebase SDK 사용자 지정 예외등에 있어서도 불편함이 발생하고, 기존 필터는 재사용성이 떨..
spring-security-tistory/src/main/java/example/springsecuritytistory/security/JwtBeanGenerator.java at master · jsween5723/sprin티스토리 블로깅을 위한 예제. Contribute to jsween5723/spring-security-tistory development by creating an account on GitHub.github.com개요많은 경우에 JWT관련 예제를 보면 랜덤한 키를 생성하여 현재 로그인된 토큰들이 서버 재실행시 재사용이 불가능하도록 하는 경우가 대부분이다.그렇다고 운영체제마다 다른 키 생성방법과 PKCS8 변환과정은 곤혹스럽기만하다.따라서 공통이라고 볼 수 있는 자바 코드로 키 ..
개요2024.08.30 - [Spring/Spring Security] - Spring Security 6 - 일반 로그인 | 폼 로그인2024.08.31 - [Spring/Spring Security] - Spring Security 6 - OAuth 2 Client 간편 로그인 | 카카오 로그인2024.09.01 - [Spring/Spring Security] - Spring Security 6 - 세션 기반 인증 유지 | Authentication Persistence지난 글 들에서 로그인 기능과 세션 기반 인증 유지 방법에 대해서 알아보았다.이번 글에선 JWT 관련 컴포넌트를 제공해주는 spring-security-oauth2-resource-server 패키지와 구성방법에 대해서 알아볼 것이다...
결과본https://github.com/jsween5723/spring-security-tistory/tree/dd40c435a818a75a28c9bab2db165867e023d907세션에 저장 여부 확인https://github.com/jsween5723/spring-security-tistory/commit/428d69c226f2fe499f7518fc2ccb7cef87e046ca해당 커밋을 통해 테스트비 로그인 시 간편 로그인 후 일반 로그인 후 위처럼 로그인 이후에는 요청시에 Authentication이 유지되는 것을 알 수 있다. 매 요청 시마다 이렇게 Authentication이 유지되어 컨트롤러에서 반환될 수 있는 이유는 SecurityContextHolderFilter가 있기 때문이다.해당 ..
이전에 UserDetails와 OAuth2User를 바로 엔티티에 구현했던 적이 있었다.JPA는 하이버네이트 프록시 클래스 인스턴스를 생성해 반환하는 것을 알고난 후 그만두게 되었다.영속성 범위에 따라 fetch 문제가 생길 수 있다.물론 다음과같은 방법으로 실제 인스턴스를 반환받아 사용할 수도 있다.Hibernate.unproxy(paymentReceipt.getPayment());참고:https://www.baeldung.com/hibernate-proxy-to-real-entity-object 하지만 코드에 직관성이 떨어지며 해당 Principal로 반환된 인스턴스가 하이버네이트 프록시인지 아닌지 다른 로직에서 검사해야하는 골치아픔이 남게된다. 필드가 프록시인지 아닌지 항상 의심해야하는 상황이 발생..
개요간혹 필터체인에서 참조하는 컴포넌트에서 PasswordEncoder 등 필터체인이 정의된 Configuration에 정의된 Bean을 사용해야해 문제가 발생하는 경우가 있다. 바로 하위가 아니더라도 UserService라던지... 회원가입 로직에서 사용하거나 할경우 발생한 적이 많았다. 그래서 다음과 같이 분리하는 방법을 자주 애용한다.@Configurationclass SecurityBeanGenerator { @Bean public UserDetailsService userDetailsService(UserRepository userRepository) { return username -> { UserEntity userEntity = userReposi..