기본 콘텐츠로 건너뛰기

라벨이 Spring인 게시물 표시

[Security] OAuth2 정리하기

Summary application이 Facebook, Github 같은 HTTP 서비스에 대한 사용자 계정에 접근을 할수 있도록하는 인증 framework. 사용자 인증을 사용자 계정을 호스팅하고 있는 서비스에 맡기고 third-party application에게 사용자 계정에 대한 정보에 접근 할수 있도록 권한을 부여 web app, desktop app, mobile app에게 authorization flow를 제공해줌 참고 Grant Type : Authorization Code 유저에게 인가요청 유저가 인가허가 Auth Server는 Client에게 authorization code 부여 Client는 access token을 Auth Server에 요청 Auth Server는 Client에게 token 전달 Grant Type : Implicit 위 과정 3번과정을 다음과 같이 변경 Auth Server에서 Access Token과 함께 redirection URI 전달 redirection URI로 이동하여 token 획득 client에서 token extract 스크립트를 브라우저로 전달 브라우저에서 Client로 token 전달 Grant Type : Resource Owner Password Credentials username과 password를 app에서 username과 password를 입력받아서 인가서버에 보내서 토큰 획득 다른 방식이 안될때만 사용권장, app이 user에 의해 신뢰가 될때만 사용(e.g. 앱 자체가 Auth service에 의해 소유될때) Grant Type : Client Credentials app 자체의 credentials(client id, client secret) 를 Auth Server에 보내서 Access Token을 획득 app이 redirect URI에 대한 정보를 업데이트 하고 싶다거나, api를 통해서 app 자체의 데이터를 받아고고 싶을 때 사용이 가능하다.

[Spring Boot] Spring 2.x 버전에서 JAR로 Packaging 하는 것에 대하여

 Spring Boot 2.x 버전의 앱을 JAR로 패키징하는데 꽤나 많은 시간을 소비하였는데, 2.x 이전버전의 경우를 시도하다 보니 시행착오를 많이했다. 스택오버플로우 에서 찾아보면서 꼼꼼히 읽는 훈련을 계속 해야겠다. 해답은 간단했다. https://stackoverflow.com/a/52404325/8276700   Spring Boot 2.x 버전에서 bootJar과 bootWar 이라는 gradle task가 app을 패키징하는 역할을 한다. bootJar task는 실행가능한 jar file을 만드는데 책임을 지고 이는 java plugin이 적용이 될때 자동으로 생성된다고 한다. 따라서 build.gradle 파일에 다음 라인을 추가해야한다. plugins {     id 'java'     id 'org.springframework.boot' version '2.3.4.RELEASE' } 그리고 루트 디렉토리에서  ./gradlew bootJar  을 입력하면 build/libs 폴더에 jar 파일이 생성된다. 유사하게 bootWar는 executable war file을 생성하고 war plugin이 적용될때 동작한다. $./gradlew bootWar  을 입력하여 실행할수 있다.

[Trouble Shooting] Spring Maven Project에서 갑자기 api endpoint에 404 error가 뜰때 + Dynamic Web Module to x.x Error in Eclipse

Spring Maven Project에서 갑자기 api endpoint에 404 error가 뜰때  Git의  커밋로그를 분석하여 차이가 발생한 부분을 찾아보았다. 프로젝트의 .classfile에 다음 라인이 누락삭제되어서 발생하였다. <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> 이 라인이 어쩌다가 누락이 된것인지는 확실치 않지만 잘되던 프로젝트가 갑자기 안될때는 커밋로그를 분석하는게 좋은것같다. 또한 Spring Boot를 쓰면 실수할만한 환경설정들이 줄어든다는것도 느낀다. 이클립스에서Dynamic Web Module to x.x” Error in Eclipse 먼저 org.eclipse.wst.common.project.facet.core.xml 파일에 <installed facet="jst.web" version="y.y"/> 부분의 y.y를 x.x로 수정한다. 그리고 x.x 버전에 맞는  tomcat버전을 세팅한다. servlet 버전에 맞는 tomcat 버전은 다음에서 확인한다.( LINK )

[Spring] [Trouble Shooting] java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?

 Spring에서 default로 주어져있는 index.jsp를 사용할때  java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?  에러를 만날 수 있다. 이때는 index.jsp 파일을 view폴더에 넣고 다음과 같이 컨트롤러를 정의하여 해결할수 있다.