
Kit용 JSON Web Token (JWT) 인코딩 및 디코딩
Kit용 JSON Web Token (JWT) 인코딩 및 디코딩
[TOC]
| 파일 | 설명 |
|---|---|
.editorconfig | 편집기 서식 설정 |
.gitignore | 빌드 아티팩트 및 종속성에 대한 Git 무시 규칙 |
.tool-versions | asdf 툴 버전 (Zig, Kit) |
LICENSE | MIT 라이선스 파일 |
README.md | 이 파일 |
examples/basic.kit | 기본 HS256 사용 예제 |
kit.toml | 메타데이터, 기능 및 종속성을 포함한 패키지 매니페스트 |
src/jwt.kit | JWT 인코딩, 디코딩, 검증 및 헬퍼 API |
zig/jwt_rsa.zig | OpenSSL 기반 RSA 서명 및 검증 브리지 |
zig/kit_ffi.zig | RSA 브리지에서 사용되는 Kit Zig FFI 값 헬퍼 |
tests/hs256.test.kit | 활성 HS256 동작 테스트 |
tests/types.test.kit | 오류, 타입, 알고리즘 및 클레임 형태 테스트 |
tests/rs256.kit.disabled |
cryptoEncoding.Base64libcryptoffi이 패키지는 ffi-zig로 선언되며, RSA 서명 및 검증은 zig/jwt_rsa.zig를 사용합니다. HS256은 crypto.hmac-sha256을 사용합니다.
kit add gitlab.com/kit-lang/packages/kit-jwt.git
import Kit.Jwt as JWT
main = fn =>
secret = "my-super-secret-key-at-least-32-chars"
claims = "{\"sub\":\"user123\",\"name\":\"John Doe\",\"admin\":true,\"iat\":1700000000}"
match JWT.encode claims secret
| Err e ->
println "Failed to create token:"
println e
| Ok token ->
println "JWT:"
println token
if JWT.verify? token secret then
println "Token is valid"
else
println "Token is invalid"
match JWT.decode token secret
| Ok decoded ->
println "Header:"
println decoded.header
println "Payload:"
println decoded.payload
| Err e ->
println "Decode failed:"
println e
main
지원되는 서명 및 검증 헬퍼:
안전하지 않은 검사 헬퍼는 서명을 검증하지 않고 토큰을 디버깅하기 위해 제공됩니다.
decode-unsafeget-claims-unsafeget-header-unsafe인가 결정에 안전하지 않은 헬퍼를 사용하지 마십시오.
인터프리터로 기본 예제 실행:
kit run examples/basic.kit --allow=ffi
예제를 네이티브 바이너리로 컴파일:
kit build examples/basic.kit --allow=ffi && ./basic
활성 테스트 스위트 실행:
kit test --allow=ffi
커버리지와 함께 활성 테스트 스위트 실행:
kit test --coverage --allow=ffi
선택적 RSA 테스트 파일 직접 실행:
kit test tests/rs256.kit.disabled --allow=ffi
kit test tests/rs384.kit.disabled --allow=ffi
kit test tests/rs512.kit.disabled --allow=ffi
표준 개발 워크플로 실행 (포맷, 타입 검사, 테스트):
kit dev
이 작업은 다음을 수행합니다:
예제에 대한 인터프리터/컴파일러 동등성 검사 실행:
kit parity --failures-only
동등성 검사는 예제가 인터프리터에서 실행되고, 성공적으로 컴파일되며, 실행되고, 일치하는 출력을 생성하는지 확인합니다.
Doc 주석에서 API 문서 생성:
kit doc src/jwt.kit
참고: Doc 주석 (##)이 있는 Kit 소스는 HTML 문서를 생성합니다.
생성된 파일, 캐시 및 빌드 아티팩트 제거:
kit task clean
참고: kit.toml에 정의되어 있습니다.
이 패키지를 로컬에서 개발하기 위해 설치:
kit install
이 명령은 패키지를 ~/.kit/packages/@kit/jwt/에 설치하여 다른 프로젝트에서 Kit.Jwt로 임포트할 수 있게 합니다.
exp, nbf, iat, iss, aud)을 검증하십시오.이 패키지는 MIT 라이선스 하에 배포됩니다 - 자세한 내용은 LICENSE를 참조하십시오.
| 선택적 RS256 동작 테스트 |
tests/rs384.kit.disabled | 선택적 RS384 동작 테스트 |
tests/rs512.kit.disabled | 선택적 RS512 동작 테스트 |
| 알고리즘 | 헬퍼 |
|---|
| HS256 | encode, encode-with-header, decode, verify? |
| RS256 | encode-rs256, decode-rs256, verify-rs256?, get-claims-rs256 |
| RS384 | encode-rs384, decode-rs384, verify-rs384?, get-claims-rs384 |
| RS512 | encode-rs512, decode-rs512, verify-rs512?, get-claims-rs512 |