Почему eCDSA-подписанный jwt в .net неудача в php при использовании openssl , даже с клавишами и алгоритмами ? System.IdentityModel.Tokens.Jwt packages.
[*]In PHP using OpenSSL extension and Firebase's JWT library.
[*]Algo: ECDSA(ES256)
[*]Public key format: PEM
// ECDSA-signed JWT
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Security.Cryptography;
using Microsoft.IdentityModel.Tokens;
var privateKey = ECDsa.Create(ECCurve.NamedCurves.nistP256); // ES256
var securityKey = new ECDsaSecurityKey(privateKey) { KeyId = "1" };
var credentials = new SigningCredentials(securityKey, "ES256");
var token = new JwtSecurityToken(
issuer: "https://example.com",
audience: "https://example.com",
claims: new[] { new Claim("test", "value") },
expires: DateTime.UtcNow.AddHours(1),
signingCredentials: credentials
);
var jwt = new JwtSecurityTokenHandler().WriteToken(token);
Console.WriteLine("JWT (will fail in PHP): " + jwt);
Console.Read();
< /code>
Мой пример PHP -кода для употребления JWT: < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/79604427/ecdsa-signed-jwt-validation-failures-between-net-and-php[/url]
Почему [b] eCDSA-подписанный jwt [/b] в [b] .net [/b] неудача в [b] php [/b] при использовании [b] openssl [/b], даже с [b] клавишами и алгоритмами [/b]? System.IdentityModel.Tokens.Jwt packages. [*]In PHP using OpenSSL extension and Firebase's JWT library. [*]Algo: ECDSA(ES256) [*]Public key format: PEM
Мой пример .NET код для генерации jwt: < /p> [code]// ECDSA-signed JWT
using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Security.Cryptography; using Microsoft.IdentityModel.Tokens;
var privateKey = ECDsa.Create(ECCurve.NamedCurves.nistP256); // ES256 var securityKey = new ECDsaSecurityKey(privateKey) { KeyId = "1" }; var credentials = new SigningCredentials(securityKey, "ES256"); var token = new JwtSecurityToken( issuer: "https://example.com", audience: "https://example.com", claims: new[] { new Claim("test", "value") }, expires: DateTime.UtcNow.AddHours(1), signingCredentials: credentials ); var jwt = new JwtSecurityTokenHandler().WriteToken(token); Console.WriteLine("JWT (will fail in PHP): " + jwt); Console.Read(); < /code> Мой пример PHP -кода для употребления JWT: < /p>