LINE WORKSのJWT認証をPHPで通してみる
ちょっと仕事でLINE WORKSの認証を通す必要があったのですが、
composerでjwtライブラリを入れて認証するものが多かったのでピュアPHPで入れるとこうなるって
ものを書いてみた
<?php
/**
* @property strign rsa_key プライベートキー(実際はセキュアな場所におかないとだめ)
*/
$rsa_key = "-----BEGIN PRIVATE KEY-----
[ここは発行されたプライベートキーを入れる]
-----END PRIVATE KEY-----";
/**
* @property strign server_id サーバーID
*/
$server_id = "[ここも発行されているサーバーIDを入れる]";
//Header作成
$header = '{"alg":"RS256","typ":"JWT"}';
$header = base64_encode($header);
//URLSafeな形で置換
$header = str_replace(array('+', '/', '='), array('-', '_', ''), $header);
//body作成 issはサーバーID
$body = '{"iss":"%s","iat":%s,"exp":%s}';
//生成は現在時刻、満了は30分後に設定
$body = sprintf($body, $server_id, time(), time() + 1800);
$body = base64_encode($body);
$body = str_replace(array('+', '/', '='), array('-', '_', ''), $body);
//headerとbodyをつなげたもの
$sha_hash = $header . "." . $body;
//電子認証を行うアルゴリズムはSHA256にしないといけない
openssl_sign($sha_hash, $encrypted, $rsa_key, OPENSSL_ALGO_SHA256);
$signature = base64_encode($encrypted);
$signature = str_replace(array('+', '/', '='), array('-', '_', ''), $signature);
//JWT生成
echo $header . "." . $body . "." . $signature;
こんな感じで200OKが帰ってきて成功する
本来はライブラリでやるんでしょうけど、それが諸々の理由でできない人はこんな感じで認証できるよという話でした
Author And Source
この問題について(LINE WORKSのJWT認証をPHPで通してみる), 我々は、より多くの情報をここで見つけました https://qiita.com/raharu0425/items/bd1aab00eea516b376b6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .