[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]

-[[戻る>クレームベース認証]]

* 目次 [#ld8342fd]
#contents

*概要 [#yfb13271]
-JWTとはJSON Web Tokenの略
-JSONを使ったurl-safeなクレームの表現方法

-クレームが改ざんされていないかをチェック可能
--この特徴のため、認証サーバから返されるトークンに使われる。
--主に、[[OAuth]]拡張や[[OpenID Connect]]などで使われている。

-JWSとJWE構造の両方の中にエンコードされるJSONクレームのセット~
(JWTを作る方法としてJWSとJWE、もしくは両方を使った方法がある)

*構造 [#ad27d98c]

**構成要素 [#q01f4062]
以下の要素から構成される。

***ヘッダ [#m9c6f99a]

***クレーム [#m5b94cda]

-予約済みクレーム
-パブリッククレーム
-プライベートクレーム

***署名 [#f7edb04c]

**JWTの種類 [#j5dabc60]

***JWS [#md583102]
署名されたJWT

BASE64URL (UTF-8 (Header))
.
BASE64URL (UTF-8 (Claim Set))
.
Base64url (UTF-8 ( Signature))

***JWE [#y75c2692]
暗号化されたJWT

BASE64URL (UTF-8 (JWE Protected Header))
.
BASE64URL(JWE Encrypted Key)
.
BASE64URL(JWEInitialization Vector)
.
BASE64URL(JWE Ciphertext)
.
BASE64URL(JWE Authentication Tag)

***プレーンJWT [#of14a838]
[[ヘッダ>#m9c6f99a]]内のalgはnone = {“alg”: “none”} 。

BASE64URL (UTF-8 (Header))
.
BASE64URL (UTF-8 (Claim Set))

*JWTの作成と検証手順 [#dd514c38]
難しいのでライブラリを使用する。.NETならNugetからメジャーな奴を入れる。


-JWS 実装時に作りがちな脆弱性パターン - OAuth.jp~
http://oauth.jp/blog/2015/03/16/common-jws-implementation-vulnerability/

-OpenID Connect の JWT の署名を自力で検証してみると見えてきた公開鍵暗号の実装の話 - Qiita~
http://qiita.com/bobunderson/items/d48f89e2b3e6ad9f9c4c

-oauth - Is there a JSON Web Token (JWT) example in C#? - Stack Overflow~
http://stackoverflow.com/questions/10055158/is-there-a-json-web-token-jwt-example-in-c

**JWTの作成手順 [#pfa9f0dd]

***概要 [#wbf0fb96]
-JWSまたはJWEの手順に従って生成
-入れ子になったJWTの場合には[[ヘッダ>#m9c6f99a]]の”cty”の値に”JWT”を指定

***手順(JWS) [#p744be69]
-[[ヘッダ>#m9c6f99a]]を生成し、UTF-8のバイト文字列に変換し、BASE64urlエンコード。
-クレームセットを生成し、UTF-8のバイト文字列に変換し、BASE64urlエンコード。
-BASE64urlエンコード済みの[[ヘッダ>#m9c6f99a]]とクレームセットを~
ピリオドで連結する、UTF-8バイト文字列に変換し、BASE64urlエンコード。
-上記をヘッダで指定した暗号化プロバイダで暗号化(ハッシュ or 暗号化)

**JWTの検証手順 [#r8923712]

-JWTを[[ヘッダ>#m9c6f99a]]、クレームセット、署名に分割しBASE64urlでデコード
-[[ヘッダ>#m9c6f99a]]から種類(JWT、JWS、JWE)、暗号化プロバイダを確認
-種類、暗号化プロバイダを考慮してJWTの検証を行なう。
-JWTの検証が完了した後、クレーム内の有効期限の検証も行なう。

-JSON Web Tokens - jwt.io~
https://jwt.io/

*認証用途でJWT利用 [#yd304024]

-JWT(JSON Web Token)を使った認証を試みる | 69log~
https://blog.kazu69.net/2016/07/30/authenticate_with_json_web_token/

-JWT(Json Web Token)を利用したWebAPIでのCredentialの受け渡しについて | I am mitsuruog~
http://blog.mitsuruog.info/2014/08/jwtjson-web-tokenwebapicredential.html

-JWTを使った簡易SSOで徐々にシステムをリニューアルしている話~
http://www.slideshare.net/TsuchiKazu/jwt-ssopepabotech

*参考 [#p90217f2]
-JSON Web Token の効用 - Qiita~
http://qiita.com/kaiinui/items/21ec7cc8a1130a1a103a

-JWTについて簡単にまとめてみた - hiyosi's blog~
https://hiyosi.tumblr.com/post/70073770678/jwt%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E7%B0%A1%E5%8D%98%E3%81%AB%E3%81%BE%E3%81%A8%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F

-IETF JOSE WG と OAuth WG から一気に9本の RFC が! - OAuth.jp~
http://oauth.jp/blog/2015/05/20/jose-and-oauth-assertion-rfcs/

----
Tags: [[:認証基盤]], [[:クレームベース認証]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS