gpt4 book ai didi

php - 如何正确使用 Bearer 代币?

转载 作者:IT王子 更新时间:2023-10-28 23:55:00 26 4
gpt4 key购买 nike

我在 PHP 中制作授权系统,我遇到了传递 JWT token 的 Bearer 方案,我阅读了 [RFC 6750][1]。我有以下疑问:

  1. 这如何提高安全性?
  2. 在成功授权和登录后,服务器在其正文中使用 JWT token 响应客户端,现在当客户端发出另一个请求时,我不清楚如何实际执行此操作,我想在授权中从客户端发送 token 请求中的 header ,所以现在我应该将“Bearer”作为前缀添加到我在先前从服务器响应中收到的 token 中,如果是,那么服务器在接收到 Authorization header 时,应该将字符串与空格分开,然后取从获得的数组中获取第二个值然后对其进行解码?例如 Authorization: Bearer fdbghfbfgbjhg_something,服务器应该如何处理这个,decodeFunc(explode("", $this->getRequest()->getHeader("Authorization"))[1 ])?[1]: https://www.rfc-editor.org/rfc/rfc6750

最佳答案

1.提高安全性,因为如果在url中发送的header中没有发送token,它将被网络系统记录,服务器日志......

2.一个很好的获取Bearer token 的函数

/** 
* Get header Authorization
* */
function getAuthorizationHeader(){
$headers = null;
if (isset($_SERVER['Authorization'])) {
$headers = trim($_SERVER["Authorization"]);
}
else if (isset($_SERVER['HTTP_AUTHORIZATION'])) { //Nginx or fast CGI
$headers = trim($_SERVER["HTTP_AUTHORIZATION"]);
} elseif (function_exists('apache_request_headers')) {
$requestHeaders = apache_request_headers();
// Server-side fix for bug in old Android versions (a nice side-effect of this fix means we don't care about capitalization for Authorization)
$requestHeaders = array_combine(array_map('ucwords', array_keys($requestHeaders)), array_values($requestHeaders));
//print_r($requestHeaders);
if (isset($requestHeaders['Authorization'])) {
$headers = trim($requestHeaders['Authorization']);
}
}
return $headers;
}

/**
* get access token from header
* */
function getBearerToken() {
$headers = getAuthorizationHeader();
// HEADER: Get the access token from the header
if (!empty($headers)) {
if (preg_match('/Bearer\s(\S+)/', $headers, $matches)) {
return $matches[1];
}
}
return null;
}

关于php - 如何正确使用 Bearer 代币?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40582161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com