목록2024/01 (27)
쌓고 쌓다
시큐리티 세션 = Authentication ( UserDetails ) 구조이다. 우리가 저장할 정보는 UserDeatils 객체여야하며 그것은 Authentication으로 감싸져있다. 이것을 세션으로 사용한다. JWT를 사용하면 세션을 만들 이유는 없지만. 권한처리 때문에 일단 사용한다고하는데 JWT에 권한도 담겨져 있는것이 아닌가 생각이 들지만 나중에 JWT를 완성해보면 이해가 될것같다. 회원의 정보 TestUser는 다음과 같이 설계했다. TestUser를 UserDetails로 만들자. PrincipalDetails (UserDetails) package com.example.spotserver.config.auth; import com.example.spotserver.securityStud..
CorsConfig.java package com.example.spotserver.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @Configuration public class CorsConfig { @Bean public Co..
앞전의 코드에서 다음의 코드가 권한 확인이 안되어서 hasAnyRole("ADMIN", "MANAGER") => hasAnyAuthority 또는 hasAuthority로 변경했다. hasAnyAuthority, hasAuthority가 대소문자를 구분하므로 setRole("user")로 해놓고 권한을 "ADMIN"으로 확인하면 안된다. SecurityConfig @Configuration @EnableWebSecurity @EnableMethodSecurity(securedEnabled = true, prePostEnabled = true) public class SecurityConfig { ... } @Secured, @PreAuthorize, PostAuthorize를 사용하기위해 @EnableM..
SecurityConfig package com.example.spotserver.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.c..
BCrypt 는 단방향 암호화로 복호화가 불가능하다! 저장할 회원 테이블은 다음과 같다. CREATE TABLE test_user ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), password VARCHAR(255), role VARCHAR(255) ); SecurityConfig package com.example.spotserver.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.w..
먼저 시큐리티 사용을 위해 Gradle에 추가해주자. build.gradle implementation 'org.springframework.boot:spring-boot-starter-security' 설정파일을 관리하기 위해 다음과 같이 폴더를 구성한다. config 폴더에 SecurityConfig를 만들어준다. SecurityConfig package com.example.spotserver.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotatio..
소셜로그인이든, JWT든 oAuth든 뭘 도입하려니 액세스 토큰과 리프레쉬 토큰에 대한 이해가 필수였다. AccessToken 목적 : 정보를 쓰거나 읽을 때 사용되는 권한 확인을 위해 사용한다. 클라이언트는 처음 인증을 정상적으로 받았을 때 AccessToken과 RefreshToken을 받는데 서버에 요청할때 권한을 인증하기위해 AccessToken을 사용하는 것이다. 이 액세스 토큰이 탈취 당하여 해커가 권한을 마음대로 사용할 수 있으므로 우리는 이 토큰의 유효기간을 짧게 지정한다. RefreshToken 그럼 RefreshToken은 어디다 쓰냐? AccessToken는 유효기간이 짧다. 액세스 토큰을 새로 발급 받기 위해 RefreshToken을 사용하는 것이다. 리프레쉬 토큰은 액세스 토큰보다..
https://school.programmers.co.kr/learn/courses/30/lessons/131130#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 bool 배열로 각 상자의 방문 여부를 관리한다. 반복문으로 모든 상자를 돌며 방문 여부를 확인한다. 방문하지 않은 상자라면 방문하여 타고타고 들어가 연결된 모든 상자를 방문한다. 타고타고 들어가 방문한 상자의 개수를 vector 변수에 넣어준다. 모든 상자를 방문하면 vector를 내림차순으로 정렬한다. 0번째 1번째 원소의 곱을 정답으로 쓴다. 주의! 한번에 모든 상자를 방..