1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
<?php
require_once "./simplejwt-master/src/SimpleJWT/Crypt/EncryptionAlgorithm.php"; require_once "./simplejwt-master/src/SimpleJWT/Crypt/KeyManagementAlgorithm.php"; require_once "./simplejwt-master/src/SimpleJWT/Crypt/Algorithm.php"; require_once "./simplejwt-master/src/SimpleJWT/Crypt/KeyEncryptionAlgorithm.php"; require_once "./simplejwt-master/src/SimpleJWT/Crypt/AESCBC_HMACSHA2.php"; require_once "./simplejwt-master/src/SimpleJWT/Crypt/AESKeyWrap.php"; require_once "./simplejwt-master/src/SimpleJWT/Crypt/AlgorithmFactory.php"; require_once "./simplejwt-master/src/SimpleJWT/JWE.php"; require_once "./simplejwt-master/src/SimpleJWT/Keys/KeySet.php"; require_once "./simplejwt-master/src/SimpleJWT/Util/Util.php"; require_once "./simplejwt-master/src/SimpleJWT/Keys/Key.php"; require_once "./simplejwt-master/src/SimpleJWT/Crypt/CryptException.php"; require_once "./simplejwt-master/src/SimpleJWT/InvalidTokenException.php"; require_once "./simplejwt-master/src/SimpleJWT/Keys/SymmetricKey.php"; require_once "./simplejwt-master/src/SimpleJWT/Crypt/KeyDerivationAlgorithm.php";
public function execute(){ $arrPsks = array("MDEyMzQ1Njc4OWFiY2RlMQ");
$psk_table = array(); foreach ($arrPsks as $key => $strPsk) { $strKey = strval($key); $keys = new \SimpleJWT\Keys\KeySet(); $pskKey = new \SimpleJWT\Keys\SymmetricKey($strPsk, 'base64url'); $pskKey->setKeyId($strKey); $keys->add($pskKey); $psk_table[$strKey] = $keys; } $alg = "A128KW";
$token = file_get_contents ('php://input'); $parts = explode('.', $token, 5); if (count($parts) != 5) { throw new InvalidTokenException('Cannot decode compact serialisation', InvalidTokenException::TOKEN_PARSE_ERROR); } list($protected, $encrypted_key, $iv, $ciphertext, $tag) = $parts;
$jose_header = json_decode(\SimpleJWT\Util\Util::base64url_decode($protected), true);
$kid = $jose_header['kid'];
$psk = $psk_table[strval($kid)];
$jwe = \SimpleJWT\JWE::decrypt($token,$psk,$alg); $req = json_decode( $jwe->getPlaintext(), true);
if ($req['srcid'] == "123"){ $res = array( 'status' => 0, 'msg' => "", ); $res['data'] = array( 'item_list' => array( 'title' => "故宫博物院", 'jump_url' => "/path/to/pages3", ), ); } else { $res = array( 'status' => 2, 'msg' => "Invalid srcid", ); }
$playload = json_encode($res);
$jwe = new \SimpleJWT\JWE($jose_header, $playload); $res_body = $jwe->encrypt($psk);
header("Content-type:application/jwt; charset=UTF-8"); echo ($res_body); }
|