프로젝트 소개
Sa-Token은 dromara 커뮤니티가 유지보수하는 경량 Java 권한 인증 프레임워크로, Apache-2.0 라이선스로 오픈소스이며 현재 버전은 v1.46.0, JDK 8~25를 지원합니다. 프로젝트는 '원스톱' 인증 솔루션으로 자리매김하고 있으며, 핵심 모듈에는 로그인 인증, 권한 인증, SSO(싱글 사인온), OAuth2.0 및 마이크로서비스 인증이 포함됩니다.
로그인 인증 측면에서 프레임워크는 정적 호출만으로 세션 로그인과 검증을 완료할 수 있습니다. 예를 들어 StpUtil.login(계정 id)으로 로그인하고, StpUtil.checkLogin()으로 로그인 상태를 검증하며, 미로그인 시 NotLoginException이 발생합니다. 권한 인증은 애너테이션 방식과 라우트 인터셉터 방식 두 가지를 지원합니다. @SaCheckPermission("user:add") 같은 애너테이션은 인증과 비즈니스 코드를 분리할 수 있고, 라우트 인터셉터는 SaInterceptor와 SaRouter.match를 통해 경로 모듈별로 권한을 나눕니다.
프레임워크가 다루는 기능이 많으며, README에 나열된 항목은 다음과 같습니다: 단일/다중 단말 로그인, 동일 단말 상호 배타 로그인, Remember Me 모드, 2차 인증, 강제 로그아웃(계정 id 또는 Token 값 기준), 계정 정지, 임시 신원 전환, 타인 계정 모의, 세션 조회, 전역 리스너 및 전역 필터, 다중 계정 체계 인증, HTTP Basic/Digest 인증, 비밀번호 암호화 도구, 임시 Token, 독립 Redis, 자동 갱신, 템플릿 방언(Thymeleaf, beetl) 등. 영속 계층에 Redis를 통합하여 재시작 시 데이터 손실을 방지할 수 있으며, 프론트/백엔드 분리 환경에서 APP, 미니프로그램 등 쿠키 없는 단말의 인증을 지원합니다.
SSO 모듈은 세 가지 모드를 제공합니다. 모드 1은 프론트엔드 동일 도메인 및 백엔드 동일 Redis 환경에 적합하며 공유 Cookie로 세션을 동기화합니다. 모드 2는 프론트엔드 도메인은 다르지만 백엔드가 동일 Redis인 경우에 적합하며 URL 리다이렉트로 세션을 전파합니다. 모드 3은 프론트엔드 도메인과 백엔드 Redis가 모두 다른 경우에 적합하며 HTTP 요청으로 ticket을 검증하여 세션을 획득합니다. 프로젝트는 또한 NoSdk 모드 예제와 sso-server 인터페이스 문서를 제공하여 비 Java 프로젝트의 연동을 용이하게 하며, 도메인 검증, ticket 검증, 파라미터 서명 검증 등의 보안 조치를 포함합니다.
OAuth2 모듈은 승인 코드, 암시적, 비밀번호, 클라이언트 자격 증명의 네 가지 승인 모드를 지원합니다. 또한 프레임워크는 JWT 통합(세 가지 모드), RPC 호출 인증 및 상태 전달(dubbo, grpc 등), API Key 비밀키 인증, API 파라미터 서명(위변조 방지, 재전송 방지) 등의 기능을 제공합니다.
통합 측면에서 SpringBoot 2 외에도 SpringBoot 3/4, Solon, JFinal 등 프레임워크용 통합 패키지를 제공하며, Gateway, ShenYu, Zuul 등 게이트웨이의 라우트 인터셉터 인증에도 적합합니다. 프로젝트에는 로그인 인증, 권한 인증, SSO, OAuth2, 마이크로서비스 인증, JWT, 파라미터 서명 등의 시나리오를 다루는 60여 개의 독립 예제가 포함되어 있으며, 다국어 구현 버전(Rust, Go, NodeJS, PHP)의 커뮤니티 링크도 제공합니다.
문서는 주로 중국어로 제공되며, 번체 중국어, 영어, 일본어, 한국어, 러시아어 버전도 제공합니다. README에는 Snowy, RuoYi-Vue-Plus, Smart-Admin, 橙单, 灯灯, 拾壹博客 등 여러 통합 사례가 나열되어 있으며, Gitee GVP, GitCode G-Star 등의 커뮤니티 명예도 언급됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.