Jose.JWT.encode(payload, secretKey, JwsAlgorithm.ES256, header)
(https://github.com/dvsekhvalnov/jose-jwt 참조)을 사용하여 Apple의 새 토큰 기반 APN 시스템과 함께 사용하는 JWT 토큰을 생성하려고합니다.가져 오기 메서드를 사용하여 .p8 파일에서 CngKey를 만드는 동안 "인코딩 또는 디코딩 작업 중에 오류가 발생했습니다."오류가 발생합니다.
JWT 인코딩 방법은 secretKey가 CngKey
형식이어야합니다.
var privateKeyContent = System.IO.File.ReadAllText(authKeyPath);
var privateKey = privateKeyContent.Split('\n')[1];
//convert the private key to CngKey object and generate JWT
var secretKeyFile = Convert.FromBase64String(privateKey);
var secretKey = CngKey.Import(secretKeyFile, CngKeyBlobFormat.Pkcs8PrivateBlob);
그러나, 마지막 줄에 다음과 같은 오류가 발생 : 는 여기 CngKey
객체에 애플에서 .p8 파일을 변환 내 코드입니다. 그에 대해 별도의 오류가 (필자는 BLOB 유형을 변경할 때 나타납니다) 거기로
System.Security.Cryptography.CryptographicException was unhandled by user code
HResult=-2146885630
Message=An error occurred during encode or decode operation.
Source=System.Core
StackTrace:
at System.Security.Cryptography.NCryptNative.ImportKey(SafeNCryptProviderHandle provider, Byte[] keyBlob, String format)
at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, String curveName, CngKeyBlobFormat format, CngProvider provider)
at System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat format)
at tokenauthapi.App_Start.TokenInitSendMessage.<send>d__0.MoveNext() in C:\token-push-prototype\token-auth-api\token-auth-api\App_Start\TokenInitSendMessage.cs:line 31
InnerException:
는 입력이 잘못된 형식이 아닙니다.
이 코드는 .NET WebApi 버전 4.6에서 실행됩니다.
나는 높거나 낮게 검색했지만이 오류의 의미를 해독하지 못했습니다. 어떤 도움이라도 대단히 감사하겠습니다. 고맙습니다.