728x90

Programming 281

CodingTest - Array(1, 2차원 배열) / 2

8. N명의 학생의 국어점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력하는 프로그램을 작성하세요. 같은 점수가 입력될 경우 높은 등수로 동일 처리한다. 즉 가장 높은 점수가 92점인데 92점이 3명 존재하면 1등이 3명이고 그 다음 학생은 4등이 된다. - 방법 1 import java.util.ArrayList; import java.util.Scanner; public class Main { public int[] solution(int iNum, int[] ints) { int[] answer = new int[iNum]; int tmp = 1; for (int i = 0; i < iNum; i++) { for (int j = 0; j < iNum; j++) { if (ints[i] < in..

CodingTest - Array(1, 2차원 배열) / 1

1. N개의 정수를 입력받아, 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요. (첫 번째 수는 무조건 출력한다) - 방법 1 import java.util.ArrayList; import java.util.Scanner; public class sec2_1 { public ArrayList solution(int num, int[] arr) { ArrayList answer = new ArrayList(); answer.add(arr[0]); for (int i = 0; i < arr.length - 1; i++) { if (arr[i] < arr[i + 1]) { answer.add(arr[i + 1]); } } return answer; } public static void sec2_..

Spring - Spring Security (Method Security 적용 및 인증 적용 확인)

- Method Security - Method Secuity는 애플리케이션의 메소드 레벨에서 보안 규칙을 정의하고 적용할 수 있게 해주는 기능이다. - SecurityConfig.java @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception{ return http .authorizeHttpRequests() // .requestMatchers(HttpMethod.POST,"/auth/login").permitAll() // .requestMatchers(HttpMethod.POST,"/auth/signup").permitAll() //위의 방법을 사용하면 무한 페이지 리다이렉트 될 수 있다...? ..

Programming/Spring 2023.10.13

Spring - Spring Security (예외 핸들러 처리, 커스텀 인증 생성)

- Handler - 핸들러(Handler)를 생성하는 이유는 웹 애플리케이션에 특정 이벤트 또는 요청에 대한 사용자 정의 로직을 실행하고 처리하기 위함이다. - SecurityConfig.java @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception{ return http .authorizeHttpRequests() ..................... .defaultSuccessUrl("/") //성공한 뒤 이동하는 페이지 .failureHandler(new LoginFailHandler(objectMapper)) //로그인 실패시 발생하는 핸들러 .and() .exceptionHandling(..

Programming/Spring 2023.10.12

Spring - Spring Security (기본 설정, 로그인 폼 커스텀, UserDetailService, 역할 및 권한, remeberMe(자동 로그인))

- Spring Security - Spring Security는 Spring Framework 기반의 애플리케이션에서 보안과 관련된 기능을 처리하는 데 사용되는 강력한 보안 프레임워크이다. - Spring Security를 사용하면 애플리케이션의 인증(Authentication) 및 권한 부여(Authorization) 관련 기능을 구현하고 관리할 수 있다. 1. 인증(Authentication) 1.1. 사용자가 누구인지 확인하기 위한 인증 메커니즘을 제공한다. 1.2. 주요 인증 방식으로는 폼 인증, HTTP 기본 인증, OAuth, LDAP, SSO(Single Sign-On) 등이 있다. 1.3. 사용자 인증 정보는 사용자 이름/암호, 토큰, 인증 서버 등을 통해 확인된다. 2. 권한 부여(Au..

Programming/Spring 2023.10.10

Spring - Signup 비밀번호 암호화 (crypto, SCryptoPasswordEncoder)

- Crypto - 암호화는 정보나 데이터를 안전하게 보호하고 전송하기 위한 기술적인 방법이다. 1. 암호화는 데이터를 암호화(암호키를 사용하여 원본 데이터를 불가독하게 만드는 과정)하고, 필요할 때 이를 복호화(암호화된 데이터를 원래 상태로 복원하는 과정)하는 과정이 있다. 2. 암호화 알고리즘 : AES, RSA, DES, SHA 알고리즘이 대표적이다. 3. 대칭 암호화, 비대칭 암호화 : 대칭 암호화에서는 동일한 키를 암호화와 복호화에 모두 사용한다. 반면, 비대칭 암호화에서는 공개 키와 비밀 키라는 서로 다른 두 키를 사용한다. 4. 해시 함수 :고정된 길이의 해시 코드(또는 해시 값)를 생성하는 함수로, 입력 데이터의 일부나 전체에 대한 고유한 값을 생성한다. - SCryptPasswordEnc..

Programming/Spring 2023.10.09

Spring - JWT / 토큰 생성, 암호화 키 분리 및 개선

- JWT란 JSON Web Token의 약자로, 웹 및 애플리케이션 보안에서 사용되는 토큰 기반의 인증 방식 중 하나이다. 주로 사용자 인증 및 데이터 교환에 쓰이며, 웹 애플리케이션, 모바일 애플리케이션 및 웹 API에서 널리 사용된다. - JWT 구성 1. Header : JWT의 유형과 해싱 알고리즘 정보를 포함한다. 2. Payload : JWT에 저장되는 클레임(claim) 정보를 포함한다. 클레임은 토큰에 관련된 데이터를 설명하며, 세 가지 종류가 있다. 2.1. Registered claims : JWT에서 미리 정의된 클레임으로, "iss"(발급자), "sub"(주체), "exp"(만료 시간)등이 있다. 2.2. Public claims : JWT 사용자 정의 클레임으로, 공객적으로 사용..

Programming/Spring 2023.10.06

Spring - 데이터베이스를 통한 토큰 검증 / 쿠키를 통한 인증 및 검증

1. 데이터베이스를 통한 토큰 검증 - Test 코드 @Test @DisplayName("로그인 후 권한이 필요한 페이지 접속한다. /test2") void test4() throws Exception { //given Member member = Member.builder() .name("백인수") .email("saymay10@naver.com") .password("1234") .build(); Session session = member.addSession(); //addSeeion()을 하게 되면 Session 객체가 생성되고, Session 객체가 생성되는 것만으로도 //accessToken 필드에 값이 들어간다. memberRepository.save(member); //expected mo..

Programming/Spring 2023.10.06

Spring - 예외처리 복습!!!!!!!

- ExceptionController.java @Slf4j @ControllerAdvice public class ExceptionController { @ResponseBody @ExceptionHandler(IslogException.class) public ResponseEntity islogException(IslogException e) { int statusCode = e.getStatuscode(); ErrorResponse body = ErrorResponse.builder() .code(String.valueOf(statusCode))//애초에 받아올 때 String으로 받아오던가 반환값을 뭐 알아서 변경하면 된다. .message(e.getMessage()) .validation(e...

Programming/Spring 2023.10.05
728x90