如何使用 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、用户和密码生成动态授权码的主要内容,如果未能解决你的问题,请参考以下文章

使用 .NET Core Web API 登录和注册

基于角色的 jwt 授权

如何使用 JWT 身份验证获取登录用户信息?

PHP:如何使用 JWT 从 API 注销

JWT,使用存储在 DB 中的动态密钥

如何提取 Cognito 生成的 JWT,并将其存储为 HTTPonly cookie 并与后续 API 请求一起使用(React)