php-jwt를 사용하여 인증 된 API를 구현하는 방법
8987 단어 JWTPHPCodeIgniter
php-jwt를 사용하여 인증 된 API를 구현하는 방법
개요
호스트 A에서 호스트 B로의 통신으로 편의 액세스를 방지하기 위해
액세스 키가 있는 프로그램만 실행할 수 있도록 합니다.
php-jwt 도입
php-jwt를 composer로 다운로드
$ composer require firebase/php-jwt
firebase/php-jwt
샘플 코드
샘플은 최근 안건으로 사용하고 있으므로 Codeigniter 베이스🙇♂️
JWT_Test.php
JWT::encode로 APP_SECRET_KEY를 사용하여 인코딩
JWT::decode에서 APP_SECRET_KEY를 사용하여 디코딩
use Firebase\JWT\JWT;
const APP_SECRET_KEY = "xxxxxxxxxx";
class JWT_Test
{
/**
* APP_SECRET_KEYを使い暗号化を行う
*/
function encode()
{
$payload = array(
"iss" => "xxx",
"aud" => "xxx/xxx",
"iat" => time(),
"exp" => time() + 3600
);
$jwt = JWT::encode($payload, APP_SECRET_KEY);
return $jwt;
}
/**
* APP_SECRET_KEYを使い復号化を行う
*/
function decode($jwt)
{
$decoded = JWT::decode($jwt, APP_SECRET_KEY, ['HS256']);
return $decoded;
}
}
Welcome.php
Guzzle을 사용하여 API 요청을하는 SSL 인증 사이트에 액세스하는 경우,'verify' => FCPATH.'cacert.pem'
필요, cacert.pem
Authorization 헤더에 인코딩 된 token과 함께 액세스
요구처는 Authorization 헤더를 취득 디코드 가능한 경우만 처리를 계속
curl - Extract CA Certs from Mozilla
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('JWT_Test');
}
/**
* 本体側 Guzzleを使いヘッダーにトークン付きリクエストを行う
*/
public function jwt_request()
{
$token = $this->JWT_Test->encode();
$client = new GuzzleHttp\Client([
'base_uri' => 'https://xxx.xxx.xxx/',
'verify' => FCPATH.'cacert.pem'
]);
$headers = [
'Authorization' => $token,
'Accept' => 'application/json',
];
$response = $client->request('GET', '/sample-acc/welcome/jwt_request_decode', [
'headers' => $headers
]);
var_dump($response->getBody()->getContents());
}
/**
* レスポンス側 ヘッダーのトークンが復号化可能な場合に処理を継続
*/
public function jwt_request_decode()
{
$headers = apache_request_headers();
$token = $headers['Authorization'];
try {
$result = $this->JWT_Test->decode($token);
echo json_encode($result);
} catch (Exception $e) {
echo $e->getMessage();
}
}
}
좋아! 라고 생각하면 LGTM 부탁합니다
【PR】 주말 하카손이라는 이벤트하고 있습니다! → ㅡㅡㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ 그리고 ysc Rechin. jp/아보 t/
Reference
이 문제에 관하여(php-jwt를 사용하여 인증 된 API를 구현하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/morita-toyscreation/items/81ef58ab7a52f96447a8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
호스트 A에서 호스트 B로의 통신으로 편의 액세스를 방지하기 위해
액세스 키가 있는 프로그램만 실행할 수 있도록 합니다.
php-jwt 도입
php-jwt를 composer로 다운로드
$ composer require firebase/php-jwt
firebase/php-jwt
샘플 코드
샘플은 최근 안건으로 사용하고 있으므로 Codeigniter 베이스🙇♂️
JWT_Test.php
JWT::encode로 APP_SECRET_KEY를 사용하여 인코딩
JWT::decode에서 APP_SECRET_KEY를 사용하여 디코딩
use Firebase\JWT\JWT;
const APP_SECRET_KEY = "xxxxxxxxxx";
class JWT_Test
{
/**
* APP_SECRET_KEYを使い暗号化を行う
*/
function encode()
{
$payload = array(
"iss" => "xxx",
"aud" => "xxx/xxx",
"iat" => time(),
"exp" => time() + 3600
);
$jwt = JWT::encode($payload, APP_SECRET_KEY);
return $jwt;
}
/**
* APP_SECRET_KEYを使い復号化を行う
*/
function decode($jwt)
{
$decoded = JWT::decode($jwt, APP_SECRET_KEY, ['HS256']);
return $decoded;
}
}
Welcome.php
Guzzle을 사용하여 API 요청을하는 SSL 인증 사이트에 액세스하는 경우,'verify' => FCPATH.'cacert.pem'
필요, cacert.pem
Authorization 헤더에 인코딩 된 token과 함께 액세스
요구처는 Authorization 헤더를 취득 디코드 가능한 경우만 처리를 계속
curl - Extract CA Certs from Mozilla
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('JWT_Test');
}
/**
* 本体側 Guzzleを使いヘッダーにトークン付きリクエストを行う
*/
public function jwt_request()
{
$token = $this->JWT_Test->encode();
$client = new GuzzleHttp\Client([
'base_uri' => 'https://xxx.xxx.xxx/',
'verify' => FCPATH.'cacert.pem'
]);
$headers = [
'Authorization' => $token,
'Accept' => 'application/json',
];
$response = $client->request('GET', '/sample-acc/welcome/jwt_request_decode', [
'headers' => $headers
]);
var_dump($response->getBody()->getContents());
}
/**
* レスポンス側 ヘッダーのトークンが復号化可能な場合に処理を継続
*/
public function jwt_request_decode()
{
$headers = apache_request_headers();
$token = $headers['Authorization'];
try {
$result = $this->JWT_Test->decode($token);
echo json_encode($result);
} catch (Exception $e) {
echo $e->getMessage();
}
}
}
좋아! 라고 생각하면 LGTM 부탁합니다
【PR】 주말 하카손이라는 이벤트하고 있습니다! → ㅡㅡㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ 그리고 ysc Rechin. jp/아보 t/
Reference
이 문제에 관하여(php-jwt를 사용하여 인증 된 API를 구현하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/morita-toyscreation/items/81ef58ab7a52f96447a8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ composer require firebase/php-jwt
샘플은 최근 안건으로 사용하고 있으므로 Codeigniter 베이스🙇♂️
JWT_Test.php
JWT::encode로 APP_SECRET_KEY를 사용하여 인코딩
JWT::decode에서 APP_SECRET_KEY를 사용하여 디코딩
use Firebase\JWT\JWT;
const APP_SECRET_KEY = "xxxxxxxxxx";
class JWT_Test
{
/**
* APP_SECRET_KEYを使い暗号化を行う
*/
function encode()
{
$payload = array(
"iss" => "xxx",
"aud" => "xxx/xxx",
"iat" => time(),
"exp" => time() + 3600
);
$jwt = JWT::encode($payload, APP_SECRET_KEY);
return $jwt;
}
/**
* APP_SECRET_KEYを使い復号化を行う
*/
function decode($jwt)
{
$decoded = JWT::decode($jwt, APP_SECRET_KEY, ['HS256']);
return $decoded;
}
}
Welcome.php
Guzzle을 사용하여 API 요청을하는 SSL 인증 사이트에 액세스하는 경우,
'verify' => FCPATH.'cacert.pem'
필요, cacert.pemAuthorization 헤더에 인코딩 된 token과 함께 액세스
요구처는 Authorization 헤더를 취득 디코드 가능한 경우만 처리를 계속
curl - Extract CA Certs from Mozilla
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('JWT_Test');
}
/**
* 本体側 Guzzleを使いヘッダーにトークン付きリクエストを行う
*/
public function jwt_request()
{
$token = $this->JWT_Test->encode();
$client = new GuzzleHttp\Client([
'base_uri' => 'https://xxx.xxx.xxx/',
'verify' => FCPATH.'cacert.pem'
]);
$headers = [
'Authorization' => $token,
'Accept' => 'application/json',
];
$response = $client->request('GET', '/sample-acc/welcome/jwt_request_decode', [
'headers' => $headers
]);
var_dump($response->getBody()->getContents());
}
/**
* レスポンス側 ヘッダーのトークンが復号化可能な場合に処理を継続
*/
public function jwt_request_decode()
{
$headers = apache_request_headers();
$token = $headers['Authorization'];
try {
$result = $this->JWT_Test->decode($token);
echo json_encode($result);
} catch (Exception $e) {
echo $e->getMessage();
}
}
}
좋아! 라고 생각하면 LGTM 부탁합니다
【PR】 주말 하카손이라는 이벤트하고 있습니다! → ㅡㅡㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ 그리고 ysc Rechin. jp/아보 t/
Reference
이 문제에 관하여(php-jwt를 사용하여 인증 된 API를 구현하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/morita-toyscreation/items/81ef58ab7a52f96447a8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)