$time =
time();
$claims =
[ 'iat' =>
$time,
'nbf' =>
$time,
'exp' =>
$time + 3600,
'iss' => 'https://www.example.com',
'aud' => 'Symfony OIDC',
'sub' => 'e21bf182-1538-406e-8ccb-e25a17aba39f',
'username' => 'dunglas',
];
$token =
(new CompactSerializer())->
serialize((new JWSBuilder(new AlgorithmManager([ new ES256(),
])))->
create() ->
withPayload(json_encode($claims)) // tip: use https://mkjwk.org/ to generate a JWK
->
addSignature(new JWK([ 'kty' => 'EC',
'crv' => 'P-256',
'x' => '0QEAsI1wGI-dmYatdUZoWSRWggLEpyzopuhwk-YUnA4',
'y' => 'KYl-qyZ26HobuYwlQh-r0iHX61thfP82qqEku7i0woo',
'd' => 'iA_TV2zvftni_9aFAQwFO_9aypfJFCSpcCyevDvz220',
]),
['alg' => 'ES256'
])