본문 바로가기

Java & Spring

(8)
Spring Security6 - OAuth2 Authorization Server 삽질일기 (1편: OAuth2&CustomUser) 시작하기에 앞서 정말 수많은 삽질이 있었다.참... 알고보면 별것도 아닌데...    ****************************************  (시간이 없으신 분들은 아래 구간 스킵) **************************************** 세상이 참 좋아지면서 생성형 AI들의 도움을 많이 받기 시작했다.물론 습득을 위해서는 AI만 의존하는 것보다 직접 구글링을 하는 게 더 좋다는 이야기도 들어서 새로운 기술은 최대한 공식문서를 이용하려고 하는 편이다.최근들어 GPT의 할루시네이션에 진절머리가 나서 한동안 잘 안쓰다가 cursor ide가 꽤 괜찮다는 이야기에 자주 노출되다 보니 한 번 사용해보기로 했다. 실제로 사용해보니.. 오 신세계... Chat만 제공하는게 아니라..
Spring Security - UserDetails의 4가지 Boolean 타입(isAccountNonExpired, isAccountNonLocked, isCredentialsNonExpired, isEnabled) 오늘은 사용자 계정의 상태를 나타내는 4가지 boolean 타입 (isAccountNonExpired, isAccountNonLocked, isCredentialsNonExpired, isEnabled)과 각 상태의 차이점을 패스워드 만료 포함하여 정리해보겠습니다.  1. 계정 만료 (isAccountNonExpired):설명: 계정의 유효 기간이 지났는지를 나타냅니다.예시: 회사 정책상 계정이 1년 동안만 유효한 경우, 1년이 지나면 계정이 만료됩니다. 만료된 계정으로는 로그인할 수 없습니다.사용 시나리오: 계정의 유효 기간을 제한하여 일정 기간 후 계정을 비활성화할 필요가 있을 때 사용됩니다. 2. 계정 잠김 (isAccountNonLocked):설명: 계정이 잠겨 있지 않음을 나타냅니다.예시: 사용..
Spring CSRF - Thymeleaf와 Fetch API 오늘은 간단하게 CSRF Token을 처리하는 방법을 정리해보고자 한다.기존 JSP를 거의 걷어내면서 약간씩 다르게 처리되는 부분이 있어 정리차원에서 글을 남긴다.1. Thymeleaf :  우선 평소처럼 작성을 하고 csrf token을 처리할 생각이었다.하지만 찾아보니 기본적으로 thymeleaf의 기능을 활용하면 알아서 form 요청 시 hidden input에 토큰을 처리해준다고 한다.크게 바꿀것은 없고 아래와 같이 작성해주면 된다.  thymeleaf에서 주소를 다룰 때 @{ ... } 방식을 사용하면 된다.JSP의 EL 표기법처럼 ${ ... } 사용하는 것은 그대로이며, 두가지를 혼용하여 사용도 가능하다.실제로도 input hidden이 추가된 것을 볼 수 있다. 아래 value에 toke..
Spring Security - csrf는 무엇이며, 왜 disable하는 경우가 많은가? 글을 쓰기에 앞서 왜 이미 알고 있는 내용을 정리하는가?1년간 데이터분석에 파이썬만 만졌더니 자바 웹기술에 대한 내용들이 뭔가 뿌옇게 흐려진 느낌이다.그래서 내가 어디까지 모르는지 잊어버린 것은 없는지 확신을 얻기 위해 순차적으로 정리해보기로 했다. 1. CSRF란?우선 csrf 라는 용어의 정의부터 잊지 않았는지 짚고 가자면..희끄무리하지만 내 기억상 웹사이트에서 위조요청을 날리는 일종의 보안 위협요소이다.xss(cross site script)의 경우, 스크립트를 이용한 경우라면,csrf(cross site request forgery)는 요청 자체를 위조해서 권한을 취득하는 등의 행위를 이용하는 것이다.해당 방식은 공격자가 인가자(권한이 있는 자)를 이용해 특정 요청을 하게 하는 방식이라고 보면 되..
짧게 배워보는 취미 개발 로드맵 (1) - 서론 개인적인 일들과 애드고시 불합격 소식에 한동안 글쓰는 것을 포기하고 있었는데, 다른 글 다 지우고 Java에서는 f-string 같은 건 없나하고 찾아보다가 써놓은 글을 많은 분들이 읽어주셔서 다시 한 번 시작해보려 한다. 그리고 뭔가 바뀌지 않으면서 달라진 내일을 기대하는건 바보 같다는 생각이 계속 들어서 힘든 중에도 다시 시작해보려고 한다. 비록 주니어 수준의 대리 나부랭이 개발자지만 배운 것을 복습하고, 잊지 않게 기록한다는 마음과 나도 처음에는 분명 이런 부분 때문에 고생했었는데.. 싶은 부분을 내가 소화한 한도까지 정리해 보려고 한다. 고로 내가 틀리거나 더 나은 방식을 놓치고 있을 수 있다. 따라서 지나가시던 선배님들의 충고와 조언은 환영이며, 감정이 상하지 않는 선에서 감사히 받겠습니다. 앞..
getter 와 setter 아래의 내용 중 메서드를 사용하기 때문에 느리다는 식의 이야기는 지금에 와서는 큰 의미가 없다는 것을 알게 되었다. 사실 그렇게 따지면 JVM을 쓰는 것 자체가 C보다는 리소스를 더 쓰고 더 무겁다. 하지만 이것은 상대적인 것이지 클라이언트 컴퓨팅 파워 마저 옛 서버 PC이상의 성능을 내고 있는 요즘 세대에 와서는 큰 고려 대상이 아닌 것으로 보인다. 만약 당신이 극한상황의 Embedd 프로그램을 만드는 것이라면 애초에 JVM보단 다른 선택을 할 것이기 때문에 아래의 Getter, Setter는 성능과 연결지어 생각하는 것보다는 원래의 목적에 포커스를 맞추는 것이 좋을 듯 하다. Getter, Setter에 대해 사람 몸으로 예시를 들자면, 입을 통해 음식을 씹어 삼켜서 소화를 시켜야 정상적으로 영양분을..
JS는 Template Literal, python은 f-string, 그럼 Java는? 1. 들어가며 최근 개발 언어에서 문자열 포맷팅을 위한 새로운 기능들이 추가되고 있습니다. 예전에는 문자열을 결합하기 위해서 + 연산자나 String.format()과 같은 메서드를 사용했지만, 이제는 새로운 기능들을 통해 간단하게 문자열을 포맷할 수 있게 되었습니다. Python에서는 f-string이라고 불리는 새로운 포맷팅 기법이 추가되었고, Javascript에서는 Template Literal이라는 새로운 문자열 표기법이 등장했습니다. 그렇다면 Java에서는 어떤 기능을 제공할까요? 이번 포스트에서는 Java에서의 문자열 포맷팅 기법인 Text Block과 printf에 대해 알아보도록 하겠습니다. 2. 자바, 자바스크립트, 파이썬 문자열 포맷팅 비교 Javascript와 Python은 각각 T..
JAVA Study Memo 1 아래의 내용은 2020년도 공부당시 정리했던 https://blog.naver.com/csound93/221805026966 블로그의 내용을 옮겼습니다. 지금와서 돌아보면 그냥 난잡하게 글을 썼던 것 같네요. 추후 포스트를 통해 이전블로그에서 작성했던 내용들을 다시 정리해 보는 시간도 갖도록 하겠습니다. - 기본 데이터 타입의 종류 : byte(1byte), short(2), char(2, 유니코드 문자 사용), int(4), long(8), float(4), double(8) // 작은 상자에 담겨 있던 내용물을 큰 상자에 옮기는 건 가능하지만, 큰 곳에 있던 것을 작은 곳으로 옮기는 것은 불가능하다. // 자바에서 default 값 : 정수는 int 이고, 실수는 doub..