터미널에서 JSON 웹 토큰 디코딩
영감
아마도 이것을 하기 위한 수십 개의 응용 프로그램이 있을 것입니다. 나는 그들이 거기에 있다는 것을 확실히 알고 있지만 DockerHub에서 다운로드 제한을 얻는 방법에 대한 Reddit에서 이 게시물을 읽을 당시에는 그 중 어떤 것도 찾을 수 없었습니다. 요구 사항은 매우 간단했습니다. 토큰을 푸시할 수 있는 하나의 애플리케이션이 필요하며 형식화된 JSON을 출력합니다. 검증이나 멋진 일이 필요하지 않습니다. 출력물을 색칠하고 싶지만 이는 전적으로 선택 사항입니다.
그리고 이러한 필요성 때문에 저는 토요일 프로젝트를 시작했습니다.
우리는 바퀴를 다시 발명할 필요가 없습니다. 디코딩은 이미 많은 라이브러리에서 수행되며 하나를 선택하고 멋진 GO CLI 인터페이스에서 모든 것을 래핑해야 했습니다.
개발
GO를 사용하는 주된 이유 중 하나는 거의 모든 플랫폼/아키텍처용 애플리케이션을 구축할 수 있기 때문입니다. 바이너리는 약간 "뚱뚱"하지만 현실을 직시합시다. 스토리지는 이미 꽤 저렴하고 대부분의 사람들은 몇 메가바이트에 대해 신경쓰지 않을 것입니다.
나는 나를 위해 모든 작업을 수행할 수 있는 멋진 라이브러리를 찾다가 go-jose를 찾았습니다. 이것은 문제 없이 내 토큰을 디코딩하고 나중에 JSON으로 마샬링할 수 있는 GO 맵 구조에 모든 클레임을 배치합니다.
var claims map[string]interface{}
token, err := jwt.ParseSigned(tokenString)
if err != nil {
return "", err
}
err = token.UnsafeClaimsWithoutVerification(&claims)
if err != nil {
return "", err
}
자, 모든 노력이 끝났습니다. 맥주 한 잔 하면서 즐겨보세요 :-)
내 애플리케이션에 토큰을 전달하기 위해 인수-t
를 추가했습니다.tokenArgument := flag.String("t", "", "Token to decode. If not specified will try to read it from stdin.")
그리고 토큰이 명령줄 인수를 사용하여 지정되지 않은 경우 읽을 코드stdin
가 있습니다.
그런 다음 선택적인 색상화를 추가했습니다. 색상이 있으면 삶이 더 좋아지므로 선택적으로 색상화된 텍스트를 출력하기 위해 TylerBrock/colorjson을 사용했습니다.
테스트
저는 여기에서 약간 게을러서 기본 메서드가 여전히 수행해야 하는 작업을 수행하는지 확인하기 위해 몇 가지 테스트를 추가하고, 누군가 애플리케이션을 푸시하거나 풀 요청을 생성할 때마다 애플리케이션을 빌드하고 테스트하는 GitHub 작업을 추가했습니다. 그게 다야.
출시
응용 프로그램을 릴리스하는 방법에는 여러 가지가 있습니다. 너무 많은 패키지 관리자와 관리자가 소프트웨어를 설치하기로 결정한 복잡한 방법. 지금은 바이너리만 릴리스하고 사용자는 바이너리를 다운로드하여 원하는 대로 사용하기만 하면 됩니다. 나에게 완벽하게 작동하는 GO 응용 프로그램( https://github.com/wangyoucao577/go-release-action )을 릴리스하기 위한 GitHub 작업도 있습니다. 앞으로는 최소한 Ubuntu snaps 지원을 추가할 예정입니다.
사용하는 방법
내 요구 사항이 매우 간단했기 때문에 응용 프로그램 사용도 간단합니다. 토큰을 인수jwt-decode -t "ABeautifulToken"
로 전달하거나 파이프에 연결echo "ABeautifulToken" | jwt-decode
하면 작업이 수행됩니다. 색상을 원하십니까? -c
와 함께 사용하면 150% 향상됩니다.
결론
그리고 그게 다야. This은 나와 내 동료 개발자를 위해 모든 것을 더 좋게 만들려는 오늘의 모험의 결과입니다. 저에게 GitHub 스타로 구체화된 사랑을 자유롭게 남겨주세요.
배포에 적합한 바이너리를 다운로드하고 오늘 GitHub 릴리스 페이지에서 터미널의 jedi와 같은 JSON 웹 토큰 디코딩을 시작할 수 있습니다.
Reference
이 문제에 관하여(터미널에서 JSON 웹 토큰 디코딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/jadolg/decode-json-web-token-in-your-terminal-3pl9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var claims map[string]interface{}
token, err := jwt.ParseSigned(tokenString)
if err != nil {
return "", err
}
err = token.UnsafeClaimsWithoutVerification(&claims)
if err != nil {
return "", err
}
Reference
이 문제에 관하여(터미널에서 JSON 웹 토큰 디코딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jadolg/decode-json-web-token-in-your-terminal-3pl9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)