Skip to content

Instantly share code, notes, and snippets.

@markuszeller
Last active October 21, 2020 16:37
Show Gist options
  • Save markuszeller/50693e568213cbb5ac2a3a67f03317c7 to your computer and use it in GitHub Desktop.
Save markuszeller/50693e568213cbb5ac2a3a67f03317c7 to your computer and use it in GitHub Desktop.
Base64URL Support for PHP used for creating JWT (JavaWebToken)
<?php
$header = '{"alg":"HS256","typ":"JWT"}';
$payload = '{"sub":"1234567890","name":"John Doe","role":"user"}';
$encodedHeader = base64url_encode($header);
$encodedPayload = base64url_encode($payload);
$signature = hash_hmac('sha256', "{$encodedHeader}.{$encodedPayload}", 'secret', true);
$signedSignature = base64url_encode($signature);
$jwt = join('.', [$encodedHeader, $encodedPayload, $signedSignature]);
echo $jwt, PHP_EOL;
function base64url_encode($data)
{
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
function base64url_decode($data, $strict = false)
{
return base64_decode(strtr($data, '-_', '+/'), $strict);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment