How to properly use Bearer tokens?

前端 未结 2 1175
无人及你
无人及你 2020-12-04 12:56

I\'m making an authorization system in PHP, and I came across this Bearer scheme of passing JWT tokens, I read RFC 6750. I\'ve got the following doubts:

2条回答
  •  醉话见心
    2020-12-04 13:26

    1.Improving the security because if token is not sent in the header that sent in url, it will be logged by the network system, the server log ....

    2.A good function to get Bearer tokens

    /** 
     * 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;
    }
    

提交回复
热议问题