IntellJ 필수 플러그인
- Lombok : 자바는 게터 세터를 만들일이 많은데 그런 작업을 자동화해준다. 이건 그냥 필수
- Grep Console : 개발모드에선 로깅 수준을 Debug 모드로 쓰는데 로그가 많다 그런데 grep console이 적절하게 색도 나눠주고 커스텀하게 설정할 수 있게 해 준다.
다 같은 색일 땐 눈에 안 들어오는데 약간만 구별해 줘도 필요한 정보를 한눈에 알아볼 수 있다.
내가 찍은 로그를 눈에 띄게 표시해 주고 thymeleaf로 고생했는데 변경점들이 있어서 앞으로 변경될 사항도 warn으로 띄워주는데 눈에 잘 들어와서 코딩할 때 바꿔야겠다는 생각이 들게 해 준다.
hot swap 관련된 좋은 게 있지 않을까 싶어 조사해 보았으나 마땅한 대안이 없어서 이건 일단 넘기기로 했네요.
Sprng Security & Firebase Authentication
이전엔 RDB에 스프링 시큐리티를 이용하여 화면도 만들고 구현해서 사용했는데 이번에는 스프링에 파이어베이스를 이용해 서비스를 구성해 보려 한다. NoSQL과 파이어베이스 구현체를 이용해 인증관련된 것들은 구현하지 않고 파이어 베이스 Authentication 이용으로 유지보수 하기 힘들고 어려운 문제를 쉽게 풀어볼 생각이다.
기본 데이터 들은 Firestore Database를 사용하여 Document 형식으로 보관할 것이고 어떤 것들은 그래프 디비에 담아 보겠습니다.
일단은 문서들을 살펴보는 걸로 시작을 해보겠습니다.
스프링 쪽 문서에서는 파이어베이스 관련 문서는 잘 안 보이고요 Firebase 쪽 가면 Java관련 문서들로 구현을 하면 될 거 같습니다. https://firebase.google.com/docs?authuser=0&hl=ko 문서가 참 많은데 필요한 거 골라 보는 것도 힘들겠네요
일단 목표는 firebase 연동 후 로그인과 권한 firestore database에 가입 관련 정보를 넣어 보는 걸로 하고 누가 예제 잘 만들어 놓은 거 없나 모르겠네요.
- https://mvnrepository.com/ 에서 Firebase Admin 일단은 가지고 와서 종속성 설정을 잡아 줍니다.
Maven에 종속성을 추가해 주니 라이브러리를 다운로드하면서 https://protobuf.dev/ 프로토콜 버퍼 플러그인을 설치할 거냐고 물어보는데 잘 모르지만 먼가 도움이 되니 깔아 보라고 하는 거겠지요? 그래서 뭔가 볼 겸 한번 설치해 봅니다 JSON 같은 데이터 형식 변환해 주는 거 같은데 기회가 되면 적어 보겠습니다. Protocol2, 3 는 머지? - 파이어베이스 홈페이지에서 프로젝트 생성, 스토어 데이터 베이스 생성 후 프로젝트 설정에서
서비스 계정 > Firebase Admin SDK > 자바 > 새 비공개 키 생성 버튼을 누르면 json파일이 다운로드됩니다.
프로젝트의 resource 폴더에 저장해 두고
FirebaseOptions를 사용해 보려 하니 종속성을 다운로드하는데 꽤 많은 시간이 걸렸다 ㅠㅠ
머 하나 쉽게 되는 게 없다. 플러그인도 자꾸 다운받으라 하고 다운로드하고 재시작하고 그러다 보이 시간이 순식간에 날아갔다.
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>9.1.1</version>
<!-- <scope>runtime</scope>-->
</dependency>
종속성 다운로드 하는데도 오래 걸렸지만 import가 안돼서 왜 안되나 찬찬히 찾아봤더니
메이븐 설정에서 스코프를 런타임으로 해놨더니 찾지를 못한 거였다 그냥 지우고 다시 하니 잘 작동된다.
자 이제 FirebaseAuth.getInstance(firebaseApp()) 이걸 인스턴스화하면 되는데
resource 폴더 밑에 넣어둔 serviceAccountKey.json 파일을 찾을 수 없다는 에러가 자꾸 나서 해결하는데 한참이 걸렸군요.
webFlux고 jar로 묶다 보니 리소스 폴더 안의 json파일이 jar로 묶으면 최상단으로 올라가는데 이걸 잘 인식을 못하대요 그래서 찾다 찾다 ClassPathResouce로 해결했네요. 자꾸 지정한 파일을 찾을 수 없다는 메세지가 나와서..
@Configuration
@Slf4j
public class FirebaseConfig {
@Bean
public FirebaseApp firebaseApp() throws IOException {
ClassPathResource classPathResource = new ClassPathResource("serviceAccountKey.json");
FileInputStream serviceAccount =
new FileInputStream(classPathResource.getFile());
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.build();
return FirebaseApp.initializeApp(options);
}
@Bean
public FirebaseAuth getFirebaseAuth() throws IOException {
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance(firebaseApp());
return firebaseAuth;
}
}
classPathResource로 파일을 찾아내고 FileInputStream 담아 부팅시키는데 까지 성공했습니다.
진짜 엄한 데서 또 한참을 낭비했네요 ㅠㅠ
'개발 > 스프링 FIreBase Neo4j' 카테고리의 다른 글
firebase google login spring webflux 적용기 (0) | 2023.01.26 |
---|---|
Firebase, WebFlux Security, Spring 기본 설정드, 어노테이션 등 (0) | 2023.01.25 |
webflux Thymeleaf3.1 template, Layout 변경된 부분 마이그레이션 (feat LiveReload++) (0) | 2023.01.23 |
SPRING BOOT SECURITY 설정 (0) | 2023.01.22 |
Neo4j 설치 후 비밀번호 변경 (feat cypher) (6) | 2023.01.22 |