1. 인증 API - 사용자 정의 보안 기능 구현
인증 (Authentication)
사용자의 신원을 검증하는 행위 , 회원가입하고 로그인 하는 것.
인가(Authorization)
사용자에게 특정 리소스나 기능에 액세스할 수 있는 권한을 부여하는 프로세스
Spring Security에는 HttpBasic 인증 방식과 formLogin 인증방식 두 가지 인증방식이 있다.
- HttpBasic 인증 방식 : Http 프로토콜에서 정의한 기본 인증 방식.
- formLogin 인증 방식 : 서버에 해당 사용자의 session 상태가 유효한지를 판단해서 처리하는 인증 방식.
2. 인증 API - HttpBasic 인증
• HTTP는 자체적인 인증 관련 기능을 제공하며 HTTP 표준에 정의된 가장 단순한 인증 기법이다
• 간단한 설정과 Stateless가 장점 - Session Cookie(JSESSIONID) 사용하지 않음
• 보호자원 접근시 서버가 클라이언트에게 401 Unauthorized 응답과 함께 WWW-Authenticate header를 기술해서
인증요구를 보냄
• Client는 ID:Password값을 Base64로 Encoding한 문자열을 Authorization Header에 추가한 뒤 Server에게 Resourc를
요청
• Authorization: Basic cmVzdDpyZXN0
• ID, Password가 Base64로 Encoding되어 있어 ID, Password가 외부에 쉽게 노출되는 구조이기 때문에 SSL이나 TLS는 필수이다
3. 인증 API - FormLogin 인증
1. 사용자가 GET 방식으로 "/home" URL로 자원 접근을 시도함.
2. 인증에 실패할 경우 다시 인증을 받게끔 로그인 페이지로 리다이렉트
3. 올바른 username & password 입력 후 POST 방식으로 다시 인증 시도
4. 인증 결과를 담은 인증 토큰(객체)를 Security Context에 생성하고, 이 Security Context를 Session에 저장
5. 인증을 받은 후 "/home" URL로 접근을 시도할 경우, 세션에 저장된 인증 토큰으로 접근 및 인증 유지
http.formLogin( ) // Form 로그인 인증 기능이 작동함
protected void configure(HttpSecurity http) throws Exception { http.formLogin() .loginPage(“/login.html") // 사용자 정의 로그인 페이지 .defaultSuccessUrl("/home) // 로그인 성공 후 이동 페이지 .failureUrl("/login.html?error=true“) // 로그인 실패 후 이동 페이지 .usernameParameter("username") // 아이디 파라미터명 설정 .passwordParameter(“password”) // 패스워드 파라미터명 설정 .loginProcessingUrl(“/login") // 로그인 Form Action Url .successHandler(loginSuccessHandler()) // 로그인 성공 후 핸들러 .failureHandler(loginFailureHandler()) // 로그인 실패 후 핸들러 }
'Spring Security' 카테고리의 다른 글
JWT 로그인 시 Refresh-Token 저장소를 Redis로 변경하는 이유 (0) | 2024.05.20 |
---|---|
JWT와 Redis를 활용한 인증 시스템 구축하기(1) (0) | 2024.05.19 |
동시 세션 제어 / 세션 고정 보호 / 세션 정책 (1) | 2024.02.06 |
기본 API & Filter 이해 (3) - Logout, LogoutFilter (0) | 2024.02.02 |
기본 API & Filter 이해 (2) - UsernamePasswordAuthenticationFilter (0) | 2024.02.02 |