본문 바로가기

반응형

Backend/Spring | SpringBoot

(51)
[egovFramework] spring message이용 기본 준비 작업1. context-common.xmlcontext.xml: 톰캣에서 구동되는 웹 어플리케이션 자체 설정 관리사용할 message.properties 파일을 설정 classpath:/egovframework/message/com/message-common classpath:/egovframework/rte/fdl/idgnr/messages/idgnr classpath:/egovframework/rte/fdl/property/messages/properties classpath:/egovframework/egovProps/globals 60  2. servlet.xmlservlet.xml: 스프링 설정파일interceptor를 설정해서 페이지 접속 시 인터..
[Spring Security] Header정보 추가 시점 Oauth2를 연동하면서 JWT를 발급했을때 로그에서는 확인이 되는데 Header에 안들어가서 찾아보았다.확인해보니 생각보다 단순한 문제였는데 헤더를 수정할 수 있는 시점에 대한 문제였다.HTTP 응답 헤더를 설정하는 코드가 응답이 커밋되기 전에 실행되어야 합니다.만약 헤더 설정 코드가 응답 데이터가 이미 클라이언트로 전송된 후에 실행된다면, 해당 헤더는 응답에 포함되지 않습니다.서블릿 API에서는 일단 response.getOutputStream().write() 또는 response.getWriter().print() 등의 메소드를 사용하여 응답 데이터를 출력하고 나면, 이후에 헤더를 변경하거나 추가할 수 없습니다. PrintWriter writer = response.getWriter();write..
[Spring] Spring Errors org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query➡️ 해결방안//@Modifying//@Query(value = "INSERT INTO member (test) VALUES (:test)", nativeQuery = true)//void saveSocialMember(String testText);//-> 수정@Transactional@Modifying@Query(value = "INSERT INTO member (test) VALUES (:test)", nativeQuery = true)void saveSocialMember(String testText); org.h2.jdbc.JdbcS..
[Oauth2.0] Kakao Oauth2 연동 Oauth관련 yml혹은 properties 작성spring: security: oauth2: client: provider: kakao: authorization-uri: https://kauth.kakao.com/oauth/authorize token-uri: https://kauth.kakao.com/oauth/token user-info-uri: https://kapi.kakao.com/v2/user/me user-name-attribute: id registration: kakao: client-id: c..
[Oauth2.0] Oauth2.0 서비스 & WebFlux Oauth의 등장배경Oauth는 서비스 인증의 필요성에 의해 생겨났다고 한다.사용자가 각기 다른 서비스에서 독립적으로 아이디와 비밀번호를 관리해야 하는데 사용자의 입장에서는 번거로움이, 서비스에서는 별도의 각각의 인증 방식을 구축해야 했기 때문에 이에 관한 보안 문제가 있었다.또한 MSA로 서비스를 구현하는 방식이 많아지면서 다른 서비스로 접근할 일이 많이 생기기도 했다.이 두가지가 모여 사용자가 자신의 로그인 정보를 직접 제 3 어플리케이션에 제공해야했다. 하지만 이러한 과정에서 피싱과 같은 보안상 매우 위험한 상태였다. 그리고 이렇게 해서 Oauth1.0이 생겨났다. 하지만 Oauth1.0은 사용자의 로그인 정보를 직접 제공하지 않는다는 보안상 가장 코어인 문제는 해결했지만 구현이 복잡하고 그 외에도..
[JPA] Method is only allowed for a query Method is only allowed for a query. Use execute or executeUpdate instead of executeQuery; SQL statement: INSERT INTO member (MEMBER_ID, NICK_NAME, EMAIL, PASSWORD, MEMBER_AUTH, MEMBER_STATUS) VALUES (?, ?, ?, ?, 'User', 'Active') 이 에러가 발생한 원인은 어노테이션때문에 발생한 에러이다.JPA에서 쿼리를 구분할때 데이터를 반환하는가 수정 혹은 실행하는 가로 구분하게 된다. SELECT문인 executeQuery는 데이터를 반환을 목적으로 한다. INSERT문, UPDATE문, DELTE문은 execute나 executeUpda..
[Spring Security] JWT Cookie 저장 작업 JWT를 담는 방법은 3가지가 있는데 HTTP Header, Cookie, Session/Local Storage에 담는 방법이다. 각각에 대한 특징은 아래와 같다.- HTTP Header (Authorization header): 이 방법은 특히 API 사용 시에 자주 사용되며 클라이언트는 각 요청의 Authorization 헤더에 JWT를 포함시켜 서버로 보낸다.이 방식은 CSRF (Cross-Site Request Forgery) 공격에 취약하지 않으며, 토큰이 로컬 스토리지나 세션 스토리지에 저장되지 않기 때문에 XSS (Cross-Site Scripting) 공격에 대한 노출을 줄일 수 있다.- Cookie: JWT를 쿠키에 저장한다.이 방법은 서버와 클라이언트 간에 자동으로 JWT를 전송할 수..
[Spring Security] JWT토큰 사용 코드 이어지는 이전 글 : [Spring Security] JWT토큰 적용하기 [Spring Security] JWT토큰 적용하기 프로젝트 환경 spring boot : 3.2.2 spring security : 6.2.1 java : 17 database : h2 JWT토큰을 적용해 보려 한다. JWT토큰이란? JSON Web Token (JWT)는 마이크로 서비스의 인증, 인가에 사용할 수 있는 서명된 JSON이다. nwblog06.tistory.com JWT토큰관련 class import io.jsonwebtoken.Claims; import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Ma..

반응형