如何使用 JWT api、用户和密码生成动态授权码
Posted
技术标签:
【中文标题】如何使用 JWT api、用户和密码生成动态授权码【英文标题】:How to generate dynamic authorization code using JWT api, user and password 【发布时间】:2020-10-29 15:21:06 【问题描述】:现在我可以使用以下代码从 api 获取数据:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://test-api.test.org/user/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer eyJ0eXAiOiJKV1QiI1NiJ9.eyJhdWQiOiIxIiwianRpIjoN2ZiQwiZXhwIjoxNTk0MjY5NjI"
),
));
$response = curl_exec($curl);
$data = json_decode($response, true);
echo $response;
但授权码每 15 分钟到期一次,我必须在 php 中的该间隔之后刷新令牌。
我的要求是:
-
使用jwt api、用户和密码动态生成token
检查令牌是否有效或一段时间后过期
令牌过期后,刷新它并动态生成新令牌。
提前感谢您的所有支持。
【问题讨论】:
【参考方案1】:我找到了我的问题的解决方案并且它工作得很好。
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://instance/app/oauth/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "\"username\":\"yourusername\", \"yourpassword\":\"pass\"",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err)
echo "cURL Error #:" . $err;
else
echo $response;
【讨论】:
以上是关于如何使用 JWT api、用户和密码生成动态授权码的主要内容,如果未能解决你的问题,请参考以下文章
如何提取 Cognito 生成的 JWT,并将其存储为 HTTPonly cookie 并与后续 API 请求一起使用(React)