스프링 보안
Spring Security개발자 | 4 |
---|---|
안정된 릴리스 | 5.2.1 / 2019년 11월 , 전( |
기입처 | 자바 |
운영 체제 | 크로스 플랫폼 |
유형 | 웹 응용 프로그램 프레임워크 보안 |
면허증. | Apache 라이센스 2.0 |
웹 사이트 | projects |
Spring Security는 엔터프라이즈 애플리케이션에 인증, 인증 및 기타 보안 기능을 제공하는 Java/Java EE 프레임워크입니다.이 프로젝트는 2003년 말 벤 알렉스에 의해 'Acegi Security'(이름 충돌을[2] 방지하기 위해 영어 알파벳의 첫 번째, 세 번째, 다섯 번째, 일곱 번째 및 아홉 번째 문자로 발음됨)로 시작되었으며 2004년 3월 Apache License에 의해 공개되었다.그 후 Acegi는 Spring 공식 서브 프로젝트인 Spring Security로 Spring 포트폴리오에 편입되었습니다.2008년 4월에 Spring Security 2.0.0이라는 새로운 이름으로 처음 공개되었으며 Spring Source에서 상업적 지원과 훈련을 받을 수 있습니다.
인증 흐름
그림 1은 스프링보안 시스템을 사용한 인증요구의 기본적인 흐름을 나타내고 있습니다.여기에는 다양한 필터와 최초 브라우저 요청부터 인증 성공 또는 HTTP 403 오류까지의 상호 작용 방법이 나와 있습니다.
브라우저가 "인증 자격 증명"을 제출합니다. | |
"인증 메커니즘"은 세부 정보를 수집합니다. | |
"authentication request" 객체가 구축됩니다. | |
인증요구 Authentication Manager로 전송 | |
Authentication Manager(Authentication Providers 체인을 통해 요청을 전달하는 역할을 함) | |
'인증 프로바이더'는 다음 질문을 합니다.UserDetailsService 을 제공하다UserDetails 물건 | |
그 결과UserDetails 오브젝트(도 포함)를 사용하여 완전히 채워집니다.Authentication 물건. | |
"인증 메커니즘"이 완전히 채워진 를 다시 수신하는 경우Authentication 오브젝트, 이 요구는 유효한 것으로 간주됩니다.Authentication 에SecurityContextHolder ; 및 원래 요청을 재시도합니다.다른 한편으로, AuthenticationProvider 이 요구를 거부하면 인증 메커니즘은 사용자 에이전트에 재시도를 요구합니다. | |
AbstractSecurityInterceptor 는 재생성된 요구를 인가하고 Java 예외를 슬로우합니다.(아크)AccessDecisionManager (결정을 위해) | |
ExceptionTranslationFilter 에 의해 느려진 예외를 HTTP 관련 오류 코드로 변환합니다. | |
에러 코드 403 – 주체가 인증되었기 때문에 단순히 충분한 액세스 권한이 없는 경우 를 기동합니다. AuthenticationEntryPoint – 인증 메커니즘인 주체가 인증되지 않은 경우 |
주요 인증 기능
- LDAP(바인드 베이스와 패스워드 양쪽의 비교 전략 사용)를 사용해 인증 정보를 일원 관리합니다.
- 널리 사용되는 중앙 인증 서비스를 사용한 싱글 사인온 기능.
- Java Authentication and Authorization Service(JAAS) Login Module. Java 내에서 사용되는 표준 인증 방식입니다.이 기능은 JAAS Login Module에 대한 위임일 뿐입니다.
- RFC 1945에서 정의된 기본 액세스 인증.
- RFC 2617 및 RFC 2069에서 정의된 다이제스트액세스 인증
- Secure Sockets Layer 표준을 상회한 X.509 클라이언트 증명서 프레젠테이션.
- 인증용 CA, Inc SiteMinder(일반적인 상용 액세스 관리 제품).
- HTTP 또는 HTTPS 접속을 통한 주요 ID 스위칭에 대한 Su(Unix)와 같은 지원.
- Run-as-Replacement를 통해 다른 보안 ID를 가정할 수 있습니다.
- 익명인증. 즉, 인증되지 않은 주체에게도 보안 ID가 할당됩니다.
- Apache Tomcat, 수지, JBoss 및 Jetty(웹 서버)를 위한 컨테이너 어댑터(커스텀 영역) 지원.
- 브라우저 통합을 가능하게 하는 Windows NTLM(실험).
- 서블릿 컨테이너 사양과 유사한 웹 양식 인증입니다.
- HTTP 쿠키를 통한 "Remember-Me" 지원
- 동시 세션 지원 - 주체에서 허용하는 동시 로그인 수를 제한합니다.
- 커스터마이즈 및 커스텀 인증 실장 완전 지원.
주요 권한 부여 기능
인스턴스 기반 보안 기능
- 도메인 개체에 적용할 수 있는 접근컨트롤 목록을 지정하기 위해 사용됩니다.
- Spring Security는 데이터베이스에 ACL을 저장, 취득 및 변경하기 위한 저장소를 제공합니다.
- 인가 기능은 메서드 호출 전후에 정책을 적용하기 위해 제공됩니다.
기타 기능
- 사용자 인터페이스 메시지를 임의의 언어로 작성할 수 있는 소프트웨어 현지화.
- 채널 보안: 특정 규칙을 충족하면 HTTP와 HTTPS 간에 자동으로 전환됩니다.
- 프레임워크의 모든 데이터베이스 터치 영역에서의 캐시.
- 이벤트 구동 프로그래밍을 용이하게 하기 위한 메시지 게시
- JUnit을 통한 통합 테스트 실행 지원
- Spring Security 자체에는 포괄적인 JUnit 격리 테스트가 있습니다.
- 샘플 어플리케이션, 상세 Java Docs 및 레퍼런스 가이드.
- 웹 프레임워크의 독립성.
릴리스
- 2.0.0 (2008년 4월)
- 3.0.0 (2009년 12월)
- 3.1.0(2011년 12월 7일)
- 3.1.2 (2012년 8월 10일)
- 3.2.0 (2013년 12월 16일)
- 4.0.0 (2015년 3월 26일)
- 4.1.3 (2016년 8월 24일)
- 4.2.0 (2016년 11월 10일)
- 3.2.10, 4.1.4, 4.2.1(2016년 12월 22일)
- 4.2.2(2017년 3월 2일)
- 4.2.3(2017년 6월 8일)
- 5.0.0(2017년 11월 28일)
- 5.0.8, 4.2.8 ([3]2018년 9월 11일)
- 5.1.0 GA(2018년 [4]9월 27일)
- 5.1.1, 5.0.9, 4.2.9(2018년 [5]10월 16일)
- 5.1.2, 5.0.10, 4.2.10(2018년 [6]11월 29일)
- 5.1.3, 5.0.11, 4.2.11 ([7]2019년 1월 11일)
- 5.1.4(2019년 [8]2월 14일)
- 5.1.5, 5.0.12, 4.2.12(2019년 [9]4월 3일)
레퍼런스
- ^ "Spring Security 5.2.1 and 5.1.7 Released". spring.io. Retrieved December 4, 2019.
- ^ "Why the name Acegi?". spring.io.
- ^ "Spring Security 5.0.8 and 4.2.8 Released". spring.io. Retrieved 2019-06-09.
- ^ "Spring Security 5.1 goes GA". spring.io. Retrieved 2019-06-09.
- ^ "Spring Security 5.1.1, 5.0.9, and 4.2.9 Released". spring.io. Retrieved 2019-06-09.
- ^ "Spring Security 5.1.2, 5.0.10, 4.2.10 Released". spring.io. Retrieved 2019-06-09.
- ^ "Spring Security 5.1.3, 5.0.11, 4.2.11 Released". spring.io. Retrieved 2019-06-09.
- ^ "Spring Security 5.1.4 Released". spring.io. Retrieved 2019-06-09.
- ^ "Spring Security 5.1.5, 5.0.12, 4.2.12 Released". spring.io. Retrieved 2019-06-09.