署名
概要 JWTをアクセストークンとして利用する場合、署名(秘密鍵)は認証サーバで、署名検証(公開鍵)はリソースサーバで行うのが良いです。 そのため認証サーバは公開鍵をリソースサーバに公開する必要があります。 Googleなどの大規模サービスを見ると、生…
概要 GitHubではMergeコミットなどで といったマークを見ます。これは署名されたcommitを示すものなのですが、 なぜ必要なのか どうやったら署名できるのか を今回説明します。 環境 macOS 10.14.5 Mojave gpg 2.2.10 なぜ署名が必要か? gitのコミットは co…
概要 HashiCorp VaultにはPKI(公開鍵基盤)の機能もあります。 これを使って ルートCA 中間CA を用意し、 ルート証明書 (root certificate) 中間証明書 (intermediate certificate) サーバ証明書 (primary certificate) を作成します。 環境 Vault 0.10.3
概要 SSL/TLSでは ルート証明書 (root certificate) 中間証明書 (intermediate certificate) サーバ証明書 (primary certificate) など色々なファイルや用語があり、混乱しやすいのでまとめます。 認証局(CA)について ルートCA 認証局です。 この認証局が発…
背景 AWSを運用しているとEC2のsshのキーペア管理が難しいです。 GCPであればメタデータにsshキーを登録すれば自動で各VMにsshできる仕組みがありますが、AWSは各インスタンスにsshのキーペアを1つだけ登録するようになっているため、複数人で運用するには…
概要 署名ロジックを選ぶ際に、どのアルゴリズムにするか、どれくらいの鍵長が適切なのかが分からなかったので調べてまとめました。 対象 共通鍵暗号(対称暗号) AES 公開鍵暗号 RSA ECC
概要 以前JWTを認証用トークンに使う時に調べたこと - Carpe Diemで紹介した内容の具体的な実装の紹介です。 環境 golang 1.8.1 署名アルゴリズムと鍵長は以下とします。 署名アルゴリズム 鍵長 RSA-SHA256 4096bit 成果物 今回の完成形はこちら github.com
概要 JWTを認証用トークンに使う時に調べたことをまとめます。 JWTとは JWTはJWSやJWEの構造の中にエンコードして埋め込まれるJSON形式のclaimのセットです。 一般的にはJWS形式のJWTが使われるのでそれを前提に進めます。 JWS形式のJWTは以下のフォーマット…
概要 GooglePlayでは課金処理の実行時に署名を発行してくれるため、そのレシートが正規のレシートかどうかを検証する事が可能です。 今回はGoでその検証ロジックを実装してみます。 環境 golang 1.6 必要な情報 以下の3つが必要になります。 1. アプリの公…
概要 OpenID Connectで必須なJWTの検証方法です。 以前書いた「Node.jsでOpenID Connect認証」を前提としています。 検証方法は主に2つあります。 Googleの検証用エンドポイントを使う 公開鍵を使い自分で検証する 公開鍵の方はさらに2つやり方があるので…
概要 色んな種類がありますが、各手法の流れ、メリット・デメリットを整理するためにまとめました。 今回比較するのは以下の4つです。 OpenID OAuth2.0を用いた認証(Authorization Flow) OAuth2.0を用いた認証(Implicit Flow) OpenIDConnect シーケンス…