[Spring] Spring Security OAuth2 - 인증 및 인가 흐름 요약

2024. 7. 21. 10:50·Spring

* 정수원 님의 스프링 시큐리티 OAuth2 강의 내용을 참고.(https://www.inflearn.com/course/%EC%A0%95%EC%88%98%EC%9B%90-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0)

시큐리티 인증 및 인가 흐름 요약 - 스프링 시큐리티 OAuth2(정수원)

< Authentication - 인증 >

  • SecurityContext - 이 객체가 생성되면 이미 인증받았다는 것을 의미하기 때문에 다시 인증 절차를 진행할 필요가 없다. 전역적으로 인증된 Authentication 객체를 어디에서든지 참조할 수 있도록 해준다.
  • AuthenticationFilter - 로그인을 인증하는 필터다. 일반적으로는 로그인 url로 요청하게 되면 Authentication 객체를 만든다.
    가장 보편적으로 사용하는 방식은 UsernamePasswordAuthenticationFilter가 있다.
  • Authentication - 사용자가 입력한 Id, password 값을 저장한다.
  • AuthenticationManager - 인증 관리자이다. 인증 처리를 실질적으로 할 수 있는 클래스를 찾아서 위임하는 역할이다. AuthenticationFilter가 Authentication 객체를 만든 후 AuthenticationManager를 호출한다.
  • AuthenticationProvider - 실제로 Id와 password를 최종적으로 검증해서 인증에 성공 / 실패를 처리하는 클래스다.
    • 인증 성공 : Authentication 인증 객체를 다시 만들어 UserDetails 타입의 객체를 저장하고 User가 가지고 있는 권한과 권한 증거도 저장한다. 인증에 성공한 Authentication 객체를 AuthenticationFilter에 전달한다. Filter는 전달받은 Authentication 인증 객체를 SecurityContext에 보관소에 저장한다.
    • 인증 실패 : AuthenticationFilter에 실패 정보를 보낸 후 Filter에서 실패 처리를 한다.
  • UserDetailService - DB의 데이터와 입력된 Id, password가 일치하는지 확인한다. 만약 존재한다면 User의 정보를 담은 객체의 타입은 UserDetails 타입으로 만들어서 반환을 해야 한다.

< Authorization - 인가 >

  • ExceptionTranslationFilter - FilterSecurityInterceptor에서 예외가 발생하게 되면 두 가지로 나눠서 예외 처리를 한다.
    1. 인증이 안되었을 경우
    2. 인증은 되었지만, 권한이 없을 경우
  • FilterSecurityInterceptor - 인가의 권한이 있는지 없는지 판단하고 결정한다. 
    • AccessDecisionManager - AccessDecisionVoter의 결과를 확인해 최종적으로 사용자가 Spring MVC Servlet에 접근할 수 있도록 접근 허가 여부를 판단한다.
    • AccessDecisionVoter - 현재 사용자가 접근하고자 하는 그 자원의 권한이 있는지 없는지를 투표하는 클래스
      • Access Granted - 허가
      • Access Denied - 보류

'Spring' 카테고리의 다른 글

[Spring] warning: Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type.  (0) 2024.06.10
[Spring] AWS RDS - Spring boot ( MariaDB ) 프로젝트 연결 (2)  (0) 2024.06.02
'Spring' 카테고리의 다른 글
  • [Spring] warning: Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type.
  • [Spring] AWS RDS - Spring boot ( MariaDB ) 프로젝트 연결 (2)
밀27
밀27
  • 밀27
    밀2
    밀27
    • 분류 전체보기 (33)
      • Git (1)
      • AWS (1)
      • Flutter (3)
      • Spring (3)
      • MariaDB (2)
      • TIL (23)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
밀27
[Spring] Spring Security OAuth2 - 인증 및 인가 흐름 요약
상단으로

티스토리툴바