AccessCORE License SDK
여러 언어의 제품에 같은 라이선스 규칙을 적용합니다.
자체 제품 · 다중 언어 라이선스 SDK
설계·공통 판정 › 공통 코어
서명과 검증을 하나의 Rust 코어에서
AccessCORE License SDK는 소프트웨어 제품 안에 라이선스 검증과 사용 제한을 구현하는 라이브러리입니다. 토큰 형식, 서명 검사, 만료와 유예 기간, 머신 바인딩, 기능·수량 제한을 Rust 코어에 모으고 각 언어는 얇은 바인딩으로 그 결과를 사용합니다.
Java·Python·Go가 같은 토큰을 읽을 때 판정 상태뿐 아니라 거부 사유의 메시지 키까지 같은 기준으로 처리합니다. AccessCORE License Studio도 이 코어로 라이선스를 발급하므로 발급 측과 제품 측이 서로 다른 규칙을 구현하지 않습니다.
SDK 자체는 관리 화면을 제공하는 웹 서비스가 아닙니다. 제품의 API·서비스·화면에서 필요한 지점에 검증을 연결하며, 라이선스 판매와 계약 관리는 Studio가 담당합니다.
활성화·운영 › 온라인 활성화
요청마다 검증하는 서명·장치·응답 일치
제품 키를 입력하면 SDK가 머신 식별자를 수집해 해시하고 활성화 요청과 일회성 난수인 nonce를 만듭니다. 제품의 HTTP 클라이언트가 요청을 전송하면 서버는 계약과 설치 가능 수를 확인해 서명 토큰과 활성화 자격 정보를 반환합니다.
응답은 서명, 요청 nonce, 머신 일치 여부를 검증한 뒤 저장하고 게이트에 반영합니다. 이전 활성화 응답을 다시 전달하는 재전송 공격과 다른 장치의 응답을 구분합니다. 승인 대기, 설치 수 부족, 계약 중지, 키 폐기도 서로 다른 결과로 처리합니다.
첫 활성화 이후의 요청은 활성화 비밀값으로 실제 전송 본문에 HMAC-SHA256 서명을 계산합니다. SDK가 구성한 서명 헤더와 본문을 제품의 HTTP 전송에 그대로 연결합니다.
언어·프레임워크 › Java
dev.accesscore:license-sdkJava 17부터 사용하는 서버 연동
- 바인딩
- JNA · Jackson
- 연동
- Spring · Servlet · JAX-RS · Reactor
- 배포
- 네이티브 코어를 포함한 JAR
Java 패키지는 JNA를 통해 네이티브 코어를 호출하고 Jackson으로 데이터를 전달합니다. JAR에 운영 체제별 코어를 포함하며, 첫 로딩 시 실행 환경에 맞는 라이브러리를 선택합니다. Java 17 이상을 지원합니다.
LicenseStore와 ProductIdentity를 구현하고 공개 검증 키를 애플리케이션에 포함합니다. LicenseEnforcementFilter로 미등록 상태의 요청을 제한하고, @RequiresFeature와 수량 검사로 실제 컨트롤러·서비스의 기능을 보호합니다.
Spring, Jakarta Servlet, JAX-RS, Reactor 등의 연동 계층은 사용하는 프레임워크에 맞춰 적용합니다. 패키지는 GitHub Packages의 dev.accesscore:license-sdk 좌표나 릴리스 JAR로 제공하며, GitHub Packages 조회에는 read:packages 권한이 필요합니다.
보안·배포 기술 › 지원 환경
Rust → C ABI → Java / Python / Go언어별 패키지에 포함되는 네이티브 코어
- Linux
- x86_64 · ARM64 / glibc
- macOS
- Intel · Apple Silicon
- Windows
- x86_64
- musl
- Linux x86_64 · Java/Python
공개 배포에는 Java JAR, Python wheel, Go 모듈과 플랫폼별 네이티브 코어가 포함됩니다. 기본 대상은 Linux x86_64·ARM64, macOS Intel·Apple Silicon, Windows x86_64이며, Java·Python은 Linux x86_64 musl 환경도 지원합니다.
Java와 Python은 동적 라이브러리를 로드하고 Go는 정적 라이브러리를 링크합니다. C ABI 헤더와 코어 바이너리도 제공해 별도 언어 바인딩을 구현할 출발점을 제공합니다. 브라우저 JavaScript나 WebAssembly 지원을 의미하지는 않습니다.
빌드 환경과 언어별 최소 버전, 운영 체제와 CPU 조합을 맞춰 패키지를 선택합니다. 배포 저장소에는 Rust 코어의 소스 대신 사용에 필요한 바이너리·바인딩·문서·공통 검증 벡터를 제공합니다.
