· 5 years ago · Aug 06, 2020, 10:22 AM
1function base64url_encode($data)
2 {
3 return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
4 }
5
6 function getJWT($kid,$key,$iss,$sub,$aud){
7
8 //build the headers
9 $headers = ['alg' => 'HS256', 'kid' => $kid];
10
11 //build the payload
12 $payload = [
13 'iss' => $iss,
14 'iat' => time(),
15 'exp' => time() + 60,
16 'aud' => $aud,
17 'sub' => $sub,
18 ];
19 $headers_encoded = base64url_encode(json_encode($headers));
20 $payload_encoded = base64url_encode(json_encode($payload));
21
22 $header_and_payload_combined = $headers_encoded. '.' .$payload_encoded;
23 $secret_key = 'secret_token';
24
25 //build the signature
26 $signature = base64url_encode(hash_hmac('sha256', $header_and_payload_combined, $secret_key, true));
27
28 //build and return the token
29 $jwt_token = $header_and_payload_combined . '.' . $signature;
30 return $jwt_token;
31 }