Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JWTとマイクロサービス

 JWTとマイクロサービス

社内勉強会の資料。

かとじゅん

October 23, 2018
Tweet

More Decks by かとじゅん

Other Decks in Technology

Transcript

  1. JWT とは JSON Web Token ( ジョット) ­ RFC7519 一連の要求を表すJSON

    オブジェクトとしての文字列。JWS またはJWS でコード化され、クレームは電子署名される か、暗号化される。 関連する仕様 JWS(JSON Web Sigature) ­ RFC7515 電子署名付きのメッセージ表現 JWE(JSON Web Encryption) ­ RFC7516 暗号化のメッセージ表現 JWK(JSON Web Key) ­ RFC7517 暗号鍵のJSON 表現 JWA(JSON Web Algorithm) ­ RFC7518 JWS,JWE などで扱われる暗号アルゴリズム JWT とマイクロサービス 2 / 23
  2. JWT(JWS) の例 eyJjdHkiOiJKV1QiLCJ0eXAiOiJKV1QiL CJhbGciOiJSUzI1NiIsImtpZCI6ImlOUVh0dFR2RHZhcDVkSW pGQzA5ZHZadHFXaGQ2WmFRb2pKenVuUS1vV28ifQ.eyJh dWQiOiJodHRwczovL2FwaS5jaGF0d29yay5jb20iLCJzdWIi OiIzIiwiYWNjb3VudF9pZCI6IjMiLCJzY29wZSI6WyJhbGwiXS wiaXNzIjoiaHR0cHM6Ly9vYXV0aC5jaGF0d29yay5jb20iLC JleHAiOjE1MDExMzgwNDEsImlhdCI6MTUwMTEzNzE0MSw ianRpIjoiOTcwNDAwOWItNTdlNi00NDU5LTg5NzMtNjc3Zm

    M5YjA5MjgyIiwiY2xpZW50X2lkIjoiTHZvMFlOOTJnYTVrUCJ9. BIS8QvyTHz7KK_fnmvc0fa8NQDOWy7v8Ni0LvLyuROE5UEi 7l_HxDT8tHLTQLELIm3jOw4SiW94KPYwduRL467vJ2j2eNT -zTkCXtEN8pxbA0HtnBrtCcp0dRJEMnfBegzkoAe8BTB6gee 3rrXy6sQcLb19WBrrHNbjICFL0--SG3IvPanOzABqiNMqfScn asTtj7xtIaNpbxf8LDIH3EF150Iif4BqSczJr-XppBTBYuP32Ul BnRlQOXvXqymGijQXgqDOo3LLFY_k62OoPYAQ3UXkaum8 6Al-DJM6iC-043kBINbYLLPo0uwwsolmjRDG5zBzPC0GtcjXiLy4Gqg" JWT とマイクロサービス 3 / 23
  3. // JOSE ヘッダ eyJjdHkiOiJKV1QiLCJ0eXAiOiJKV1QiL CJhbGciOiJSUzI1NiIsImtpZCI6ImlOUVh0dFR2RHZhcDVkSW pGQzA5ZHZadHFXaGQ2WmFRb2pKenVuUS1vV28ifQ . // JWS クレームセット

    eyJh dWQiOiJodHRwczovL2FwaS5jaGF0d29yay5jb20iLCJzdWIi OiIzIiwiYWNjb3VudF9pZCI6IjMiLCJzY29wZSI6WyJhbGwiXS wiaXNzIjoiaHR0cHM6Ly9vYXV0aC5jaGF0d29yay5jb20iLC JleHAiOjE1MDExMzgwNDEsImlhdCI6MTUwMTEzNzE0MSw ianRpIjoiOTcwNDAwOWItNTdlNi00NDU5LTg5NzMtNjc3Zm M5YjA5MjgyIiwiY2xpZW50X2lkIjoiTHZvMFlOOTJnYTVrUCJ9 . // JWS 署名 BIS8QvyTHz7KK_fnmvc0fa8NQDOWy7v8Ni0LvLyuROE5UEi 7l_HxDT8tHLTQLELIm3jOw4SiW94KPYwduRL467vJ2j2eNT -zTkCXtEN8pxbA0HtnBrtCcp0dRJEMnfBegzkoAe8BTB6gee 3rrXy6sQcLb19WBrrHNbjICFL0--SG3IvPanOzABqiNMqfScn asTtj7xtIaNpbxf8LDIH3EF150Iif4BqSczJr-XppBTBYuP32Ul BnRlQOXvXqymGijQXgqDOo3LLFY_k62OoPYAQ3UXkaum8 6Al-DJM6iC-043kBINbYLLPo0uwwsolmjRDG5zBzPC0GtcjXiLy4Gqg" JWT とマイクロサービス 4 / 23
  4. JWS Compact Serialization BASE64URL(UTF8(JWS Protected Header)) || '.' || BASE64URL(JWS

    Claim Set) || '.' || BASE64URL(JWS Signature) JOSE ヘッダは署名されていないので、簡単にデコード可能 JWT とマイクロサービス 5 / 23
  5. クレームセットの例 予約済みクレーム(iss, sub, aud, exp など) 独自のクレームもセットできる {"iss":"accounts.google.com", "at_hash":"HK6E_P6Dh8Y93mRNtsDB1Q", "email_verified":"true",

    "sub":"10769150350006150715113082367", "azp":"1234987819200.apps.googleusercontent.com", "email":"[email protected]", "aud":"1234987819200.apps.googleusercontent.com", "iat":1353601026, "exp":1353604926 } JWT とマイクロサービス 6 / 23
  6. JWK( 公開鍵 ) の例 { "keys" : [ { "kty"

    : "RSA", "use" : "sig", "ops" : [ "sign", "verify" ], "alg" : "RS256", "kid" : "e7c1ab27-9b4c-4a85-a476-1274feb845ae", "x5c" : [ ], "n" : "g0BrrBcjPKX3yPxGGho1dTx...Bn1UbmPqXMkTRbw", "e" : "AQAB" }, // ... ] } JWT とマイクロサービス 16 / 23
  7. Kubernetes ではどうなっていくか Istio(Envoy) のJWT 検証 Origin authentication, also known as

    end­user authentication: verifies the original client making the request as an end­user or device. Istio enables request­level authentication with JSON Web Token (JWT) validation and a streamlined developer experience for Auth0, Firebase Auth, Google Auth, and custom auth. Envoy のJWT Authentication Filter This HTTP filter can be used to verify JSON Web Token (JWT). It will verify its signature, audiences and issuer. It will also check its time restrictions, such as expiration and nbf (not before) time. If the JWT verification fails, its request will be rejected. If the JWT verification succeeds, its payload can be forwarded to the upstream for further authorization if desired. JWT とマイクロサービス 21 / 23