spring_7일차_security개념, boot

youuu·2022년 10월 25일
0

SPRING

목록 보기
9/33

⭐🌱

참고 velog : 스프링 기초와 원리


📌 Authentication Process


1. 익명 사용자
① 새로운 securityContext 객체 생성 후, securityContextHolder에 저장
AnonymousAuthenticationFilter에서 AnonymousAuthenticationFilter Token 객체를 securityContext에 저장


2. 인증시
① 새로운 securityContext 객체 생성 후, securityContextHolder에 저장 (동일)
UserNamePasswordAuthenticationFilter에서 인증 성공후, securityContext
UserNamePasswordAuthentication객체 저장
③ 인증 최종 완료후 Session에 securityContext 를 저장


3. 인증후
Session에 SecurityContext를 꺼내어 , securityContextHolder에 저장





🌱 암호화 처리


인코딩 : 정보를 부호화/암호화시킨다
다코딩 : 그 부호화/암호화를 해제한다.

  1. SecurityConfig 에서 BCryptPasswordEncoder를 Bean으로 등록
  2. SecurityController에서 암호화 하고자 한다면 아래 적용
@Autowired
private BCryptPasswordEncoder bCryptPasswordEncoder;

BCryptPasswordEncoder

  1. 코딩구현
    String encPassword = bCryptPasswordEncoder.encode(rawPassword);

4. 암호화의 개념 및 유형

  • 암호화의 개념
    • 정보를 노출시키지 않기 위해 특정 알고리즘을 이용하여 암호화된 형태로 변형
    • 암호화 알고리즘은 수학적인 과정을 통해 특정한 정보를 의미가 없는 문자로 나열
  • 방법
    • 혼돈: 메시지 원문의 내용을 짐작하기 어렵게 만드는 것을 의미
    • 확산: 암호화 알고리즘의 패턴 추론을 어렵게 만드는 역할
    • 치환(Substitution) : 문자열을 다른 문자열로 이동 및 교체
    • 이동(Transposition) : 원칙에 따라 문자열 순서를 무작위로 바꿔 이동
  • 암호화 유
    1. 대칭 암호화 : 발신자와 수신자가 동일한 개인 암호화 키를 사용하여 암호화된 메시지를
      디코딩하고 인코딩(DES,SEED,AES,Aria..) , 비밀키
    2. 비대칭 암호화: 개인정보를 보호하기 위해 대칭 암호화보다는 더 고차원적이고 안전한 방법
      공개키는 발신자와 수신자 모두 동일한 키를 가지고 있지만 개인키는 각 당사자가 고유한 키
      (RSA,Rabin, ELGamal )
    3. 해쉬(Hash) : 임의길이를 해시함수(해시 알고리즘)를 이용하여 고정된 길이의 암호화된 문자열 MD5, SHA-1, HAS-180은 사용하면 안된다.
      SHA-256, SHA-512등을 사용하기를 권고함.
      ❗ 참고로 SHA-512가 보안이 더 좋음
      bcrypt : 패스워드를 위해 탄생해서 아주 강력한 해시 알고리즘이 적용됨.
      Spring security에서 사용






🌱 boot


링크텍스트
War배포 -> tomcat서버
Jar 배포 - > 탐캣없이 배포. boot는 서버를 내장시킴.

view : 기본이 없다. (프로젝트시엔 JSP를 사용할 예정)

  • FreeMarker
  • Groovy
  • Thymeleaf
  • Velocity
  • JSP
  1. thymeleaf 템플릿 엔진
    thymeleaf 공식 사이트

스프릿 공식 튜토리얼

[스프릿부트 메뉴얼](https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/ html/spring-bootfeatures.html#boot-features-spring-mvc-template-engines)

전체 수행 Flow




profile
공부중인 주니어 개발자

0개의 댓글