프로그래밍 공부/Spring Boot
[Slack] slack bot message
협업툴로 어떤 것을 사용하는지도 기업에선 꽤나 고민이 깊다. 그중에서 메신져로써는 Slack이 가장 흔하게 사용되는 듯 하고, 에자일 형식의 프로젝트 관련은 Jira를 많이 사용한다. 카카오톡이나 Discode 등에도 존재하듯, Slack에도 Bot이 있다. loging이나 error등을 빠르고 직관적이게 확인 할 수 있기 때문에 꽤나 활용하기 좋다. 우선 채널을 만든 후에, 채팅창 옆 +버튼을 눌러 봇을 추가시켜보자. 여기서 Webhook을 검색해주자. 클릭한 후 , 버튼을 눌러주자 추가할 채널을 선택해주면, ID와 이름 설정란이 나온다. Webhook URL을 복사해준 뒤, public static void sendSlackMessage(String text) { try { ObjectMapper m..
[java] spring boot oauth2 refresh token 고민
local stragy 전략을 사용하다가, 모바일에서 문제가 터졌다. login을 하면 보통 token을 발급받고 retrofit interceptor에서 token을 심고 header로 보내는 방식이었는데, login을 안하고 상시 백그라운드 작업이 들어가면서 token 만료기간이 문제가 된 것. 이 문제를 해결하기 위해 retrofit auth 를 설정해 줄 수 있지만 ( 401이 떨어졌을때 token을 재발급 받아 다시 요청해 줄 수 있음 ) 현재는 발급 조건이 login에만 붙어있기 때문에 비밀번호를 받을 수는 없었고, 만료된 토큰을 서버단에서 체크 한 후 다시 발급해주는 로직이 필요했다. 하지만 현재 개발중인 서비스에서는 user 관련 테이블에 token값을 저장하지 않고 있었고 (jwt 인증만..
[Kotlin] java POI 를 이용한 write / download
@GetMapping(value = ["/excel"]) fun excel(res: HttpServletResponse,excelReq: ExcelReq/*, excelForm: ExcelForm*/) { val savePath = "/Users/jwkim_macbook/Desktop/exceltest.xlsx" try { XSSFWorkbook().use { wb2 -> ByteArrayOutputStream().use { fileOut -> FileOutputStream(savePath).use { fos -> val sheet1: Sheet = wb2.createSheet("Sheet1") val style: CellStyle = wb2.createCellStyle() style.setBorderB..
[Java] spring boot - firebase message server
이제는 없으면 안되는 firebase. 웹에서 작성한 알림메세지를 서버로 전송하여 각각의 디바이스로 뿌려주는 간단한 코드를 작성하고자 한다. 대략 플로우는 이런식이다. Web ( notification UI/UX ) -> Spring Boot( WAS ) -> Firebase -> Android ( device ) Firebase를 경유 해야하기 때문에 폐쇄망에서는 Firebase를 구축하거나, 방화벽 허용 등으로 해결해야 된다. https://console.firebase.google.com/ 로그인 - Google 계정 하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인 accounts.google.com 우선 Firebase -> console 로 이동해서 프로젝트 생성을 해준다..
[Spring Boot/ldaps] AD 연동
모기업에서의 AD연동을 Ldaps로 요청하여 작성하게 되었다. 추후에 Okta도 작성하겠지만, 최근 대기업에서의 Ldaps 비중은 점점 낮아지는 듯 한 느낌. 그래서 구글에서 찾아봐도 한국말로된 연동관련 포스팅은 찾아보기가 힘들다.. ..... 우선 Ldaps가 무엇인지 알아야하는데, AD ( Active Directory ) 를 사용하는 일종의 사용자관리 서비스 생각하면 편할듯하다. ldap / ldaps ? ldap은 http 통신, ldaps는 ssl인증을 통한 https 통신이라고 생각하자. ( 인증서 필요 ) pom.xml에 따로 security-ldap 을 추가하는 경우도 있는데, 사실 이번 프로젝트의 경우 ldaps의 인증값으로 stragy 전략을 짜는게 아니라, 내부적으로 존재하는 user..
[GraphQL] Spring Boot + 그래프QL 사용하기 (CRUD)
그래프 QL이란 기존 굳건하게 지켜온 Rest API를 대체할만한 수단이다. post, get, patch 등등 url을 달리해야만 했던 Rest API와는 달리 endpoint가 하나인 그래프QL은 controller가 필요 없다는 점에서 기존 작성했던 방법보다는 확실히 생산성이 높은 편이다. 예를들어, ex ) Rest API /api/post /api/post/:id /api/post/:id/postinfo /api/user . . . 이런식으로 url을 계속 파고들고, 복잡해진다는 느낌이 있는데, 그래프QL 같은 경우 (defualt 값으로) /graphql 이거 단 한개면 끝이다 물론 service단에서 어떤 도메인을 요청하는지 다 구분하지만, rest api는 service + controll..