분류 전체보기 645

OAuth2User

public interface OAuth2User extends OAuth2AuthenticatedPrincipal OAuth 2.0 provider에 등록된 user principal을 표시 OAuth 2.0 사용자는 하나 이상의 속성들로(예를 들어, first name, middle name, last name, 이메일, 연락처, 주소 등) 구성된다. 각 사용자 속성은 name, value를 가지고 있고 OAuth2AuthenticatedPrincipal.getAttributes()의 name에 의해 키 입력된다. 속성 이름은 providers 간에 표준화되지 않으므로 다르다. 이 인터페이스의 구현 인스턴스는 인증 객체와 연결되어 Authentication.getPrincipal()을 통해 액세스할 ..

[Error] ModelMapper 매핑이 안될 때

.setFieldMatchingEnabled(true) ModelMapper 빈을 등록할 때 설정해주자. Field matching은 필드를 매칭시킬 수 있는지를 나타낸다. 기본값은 disabled로 설정되어있다. 참고 👇 http://modelmapper.org/user-manual/configuration/ ModelMapper - Configuration Configuration ModelMapper uses a set of conventions and configuration to determine which source and destination properties match each other. Available configuration, along with default values, is..

ModelMapper Matching Strategy 정리

Matching Strategy Standard 기본값 MatchingStrategies.STANDARD Token들은 임의의 순서로 매칭될 수 있다. 모든 destination 속성 이름 토큰이 무조건 매칭되어야 한다. 모든 source 속성명에 매칭될 토큰이 하나 이상 있어야 한다. 정확하지 않은 반면에 대부분의 상황에서 이상적이다. Loose MatchingStrategies.LOOSE Token들은 임의의 순서로 매칭될 수 있다. 마지막 destination 속성 이름은 모든 토큰이 매칭되어야 한다. 마지막 source 속성 이름에는 매칭될 토큰이 하나 이상 있어야 한다. 매우 다른 속성 계층을 가진 source와 destination 개체 모델에 사용하는 것이 이상적이다. 더 높은 수준의 모호한..

[Error] 네이버 로그인 API Callback URL

new URL(document.referrer).searchParams.get("redirect_uri") console에 입력해서 redirect되는 url을 알아낼 수 있다. 어플리케이션에 등록한 redirect url과 같아야 한다. 참고 👇 https://help.naver.com/service/23029/contents/20352?lang=ko [서비스 설정 오류 문제 해결 방법] : 네이버 로그인 고객센터 해당 오류 메시지는 이용하려는 서비스에서 '네이버 로그인' 적용에 오류가 있는 경우 노출됩니다.​ 이용 상황에 맞게 아래의 버튼을 선택하여 이동해 주세요.​네이버 로그인 서비스를 적용 help.naver.com

FE/html 2022.10.03

[Error] naver login Uncaught TypeError: Cannot read properties of undefined (reading 'age')

APIExamNaverLogin.html callback.html APIExamNaverLogin.html의 script와 callback.html의 script를 한 파일에 같이 썼더니 발생한 에러다. 예시처럼 따로 파일을 생성하면 된다. 👇 참고 https://developers.naver.com/forum/posts/7966 개발자 포럼 - NAVER Developers developers.naver.com https://developers.naver.com/docs/login/api/api.md 네이버 로그인 API 명세 - LOGIN 네이버 로그인 API 명세 네이버 로그인 API는 네이버 로그인 인증 요청 API, 접근 토큰 발급/갱신/삭제 요청API로 구성되어 있습니다. 네이버 로그인 인증 ..

FE/html 2022.10.03

[Spring Security] rememberMe 설정

Spring Security가 제공하는 Remember Me는 시스템이 사용자를 기억하고 세션이 만료된 후 자동으로 로그인해준다. 해시를 사용해 쿠키 기반의 토큰의 보안을 유지하거나 데이터베이스 또는 다른 영구 저장 메커니즘을 사용한다. .and() .logout().deleteCookies("JSESSIONID") .and() .rememberMe().key("uniqueAndSecret").tokenValiditySeconds(86400); configure 메소드에 추가해주었다. 기본 만료 기간은 2주지만, tokenValiditySeconds 메소드로 만료 기간을 하루로 설정했다. Remember Me 쿠키는 username, expirationTime, MD5hash를 담고있다. MD5 hash..

[MockMvc] Pageable

@BeforeEach public void before(){ this.mockMvc= MockMvcBuilders.standaloneSetup(new PostRestController(this.postService)) .setCustomArgumentResolvers(new PageableHandlerMethodArgumentResolver()) .build(); } class PageableHandlerMethodArgumentResolver 웹 요청에서 페이징 정보를 추출하므로 Pageable 인스턴스를 컨트롤러 메소드에 주입한다. class StandaloneMockMvcBuilder @Controller 등록을 허용하는 MockMvcBuilder는 일반 단위 테스트와 유사한 컨트롤러의 인스턴스화 ..

Test/Junit 2022.09.17

CSRF

An expected CSRF token cannot be found 웹 어플리케이션이 요청을 보낼 때 필요한 CSRF 토큰이 요청에서 빠졌을 때 나타나는 에러 메시지다. CSRF는 웹사이트에서 인증되지 않은 행위를 취하는 비정상적인 행위를 가능하게 하는 보안 취약점이다. 이 취약점을 막기 위해 웹사이트는 요청에 포함된 unique한 토큰을 필요로 한다. 토큰이 빠지거나 매치되지 않는다면 요청은 거절된다. 기본적인 인증을 사용하는 어플리케이션은 CSRF 공격에 취약하다. Spring Security 4.0부터 CSRF 보호는 XML configuration에서 기본적으로 활성화 되어있다. Spring은 CSRF 공격을 막기위해 Synchronizer Token Pattern, 세션 쿠키에 SameSite..

Web 2022.09.15

[Error] Internal Error occurred. org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-jupiter' failed to discover tests

Junit5는 JUnit Platform, JUnit Jupiter, JUnit Vintage 모듈이 있어야한다. testImplementation 'org.junit.jupiter:junit-jupiter:5.9.0' testImplementation 'org.junit.platform:junit-platform-launcher:1.9.0' testImplementation 'org.junit.vintage:junit-vintage-engine:5.9.0' 참고 👇 https://junit.org/junit5/docs/current/user-guide/ JUnit 5 User Guide Although the JUnit Jupiter programming model and extension model ..

Test/Junit 2022.09.12