Spring Security - formLogin , httpBasic 관련

TopOfTheHead·2025년 11월 18일

Spring Security

목록 보기
9/21

Spring Security의 인증방식
HttpSecurity객체를 이용하여 Spring Security를 설정

  • formLogin() : HttpSecurity객체.formLogin() : 세션기반 로그인 기능 활성화
    Spring Security에서 기본기능으로 제공하는 세션기반 인증방식.
    。 Application에서 UI를 이용해 Web Login Form으로 로그인 시 활용하는 Session 기반 인증.
    ▶ Application에서 해당 User의 Session 상태가 유효한지 판단하며 Session을 통해 로그인상태를 유지..

    Session기반 인증 방식이므로, CSRF Protection이 반드시 활성화된 상태이어야 한다.
    JWT Token 등을 통한 인증방식의 경우 Session 비활성화 된 STATELESS의 경우 CSRF Protection를 비활성화하고, Session 기반 인증을 수행하여 Session을 통해 로그인 상태를 유지하는 formLogin()을 사용할 필요가 없으므로 비활성화.

    。사용자가 로그인 시 Spring은 해당 사용자에 대해 Session Cookie를 발급하고 이후 사용자가 수행하는 모든 API호출에 대하여 일일이 로그인 할 필요없이 해당 Session CookieHTTP Request에 포함되어 함께 전송.
    ▶ 전송된 Session CookieSpring Security에 의해 자동으로 인증이 수행됨.

    Spring Security에서 Filter Chain을 활용하여 웹브라우저에 계속 로그인 상태를 유지해야하는 경우 formLogin()을 통한 Session을 활용한 로그인설정, REST API처럼 API 호출시에만 일회성으로 로그인이 필요한 경우 Session을 사용하지 않는 STATELESS 방식으로 Token을 활용.
  • Form Login 특징
    Client가 Server에 Mapping된 resource(= URL)을 요청 시 해당 URL이 인증이 필요한 경우 Server는 Login page를 반환
    。Client는 ID와 PW를 입력 후 로그인 요청 시 POST method로 data가 Server에 전송.
    。Server는 해당 data를 확인 후 사용자 정보와 Matching할 경우 SessionToken을 생성하여 저장.

    Custom Login Page를 생성하여 UI를 변경하여 사용 가능.
    localhost:8080/logout을 URL에 입력하여 쉽게 Log-out 가능.
    CSRF Protection , HTTP Session으로 보안을 유지.

  • Session Cookie
    。웹브라우저가 실행되는동안 유지되는 Cookie로서 사용자가 Browser 종료 시 자동으로 삭제.
    ▶ 사용자 세션을 유지하거나 로그인 상태 관리 시 사용.

    。사용자가 로그인 시 Server는 Session Cookie를 발급하고, Client는 이를 HTTP Request에 포함하여 Server로 전송.

    Spring에서 formLogin()등의 인증방식을 통해 로그인 시 생성.
    ▶ 검사 → AllHeadersRequest HeaderCookie에서 생성된 Session Cookie의 ID를 확인 가능


  • httpBasic()
    Http Protocol에서 정의한 기본인증방식.
    REST API에서 HTTP Request로 Application의 Resource에 접근 시 Authorization Header를 요구.
    REST API에서 매 HTTP Request마다 Authorization Header에 ID와 PW를 포함하여 전송하여 인증하는 방식.
    ▶ 접근인증방식은 브라우저에서 Client가 Username과 Password를 Authorization Header를 통해 전송하면 됨.

    Basic Authentication : 웹브라우저의 인증 팝업으로 Authorization HeaderID/PW 입력 기능 제공.

    HTTP Basic Authentication : Basic Base64인코딩한ID:PW
    REST API의 보안에서 사용되는 가장 간단한 Authentication 방식.
    session을 사용하지 않는 stateless 특징으로 HTTP Request마다 Authentication 정보를 포함해야한다.
    ID:PWBase64로 인코딩하여 앞에 Basic을 명시한 Base64코드 ( Basic Base64코드 )을 HTTP RequestAuthorization Header로 포함하여 Authentication을 수행.

    Javascript에서는 window.btoa(id + ":" + pw)ID : PWBase64로 인코딩한 Base64코드를 생성한다.

    Basic Authenticationexpire date이 없으며, 사용자 정보도 포함하지않아 권한을 확인할 수 없다.
    Base64 Encoding을 사용하여 Decoding이 가능하며 암호화가 되지않아서 보안에 매우 취약.
    ▶ 현재는 REST API보안 시 주로 JWT 사용
profile
공부기록 블로그

0개의 댓글