WordPress OAuth2 - 以安全的方式检索令牌

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WordPress OAuth2 - 以安全的方式检索令牌相关的知识,希望对你有一定的参考价值。

我有一些代码为我的WordPress应用程序生成有效的授权令牌,但我无法弄清楚如何存储它或以安全的方式将其传递到其他地方。

require ('vendor/autoload.php');

const CLIENT_ID     = 'xxxx';
const CLIENT_SECRET = 'yyyy';
const REDIRECT_URI = '<mysite>/testRestOauth.php';
const AUTHORIZATION_ENDPOINT = '<myothersite>/oauth/authorize';
const TOKEN_ENDPOINT = '<myothersite>/oauth/token';

$client = new OAuth2Client(CLIENT_ID, CLIENT_SECRET);

if (!isset($_GET['code'])){
  $auth_url = $client->getAuthenticationUrl(AUTHORIZATION_ENDPOINT, REDIRECT_URI);
header('Location: ' . $auth_url);
die('Redirect');
}
else {
  $params = array('code' => $_GET['code'], 'redirect_uri' => REDIRECT_URI);
  $response = $client->getAccessToken(TOKEN_ENDPOINT, 'authorization_code', $params);

  $access_tkn = $response['result']['access_token'];        
}

一个快速的方法(不是安全的!)应该调用此页面并获得结果,但我不能将页面公开给公众,因为每个人都能够生成并使用令牌!

由于“代码”值尚不可用时发生的重定向,我甚至无法通过cUrl调用此页面。

任何的想法?我相信很多人都面临同样的问题。

谢谢

答案

首先,您需要向AUTHORIZATION_ENDPOINT发出请求。这是用户将对您的应用程序进行身份验证和授予访问权限以检索/使用其个人信息的位置。

然后,您将被重定向到REDIRECT_URI,在那里您将从查询字符串中检索代码。您将使用此代码向TOKEN_ENDPOINT发出请求,以获取您将用于每个用户的每个后续请求的令牌。是的,这些令牌对于每个用户都是不同的,并且它们最终会到期。您需要使用刷新令牌来处理此过期,您还应该从TOKEN_ENDPOINT接收该刷新令牌。

以上是关于WordPress OAuth2 - 以安全的方式检索令牌的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式提交 WordPress 表单密码

安全性 - JWT 和 Oauth2(刷新令牌)

利用OAuth2.0来构建一个基于Spring Boot的安全的端到端通信应用

OAuth2 客户端 ID 和客户端密钥的安全性

26.FastAPI安全性

学习充电OAuth2.0安全设计之Authorization Code