jwtを使った認証について

  • jwtとは: JSONの文字列としての長さを節約するために、よく使う属性名を予め登録しておいた規格
    • これ自体は、表現の形式を定めているだけで、セキュリティ保護は考えてない
  • jwsとは: jwtに署名を付けた形式
    • 署名がついている = jws中のjwt部分が改ざんされていないかどうかを検証できる
    • 以下のような流れでユーザーを認証する
      • ユーザーに関する情報(idなど)を含めたjsonを作る
      • 自分自身の秘密鍵で上記のjsonに署名を付けてユーザーに渡す
      • 再度、ユーザーが訪問した際に、上記のjwsを要求する
      • jwsを秘密鍵で検証する → この署名が通れば、jsonの内容が正しいと判断できる
  • 上の署名を作成する際に、信頼できる第三者(つまり、その公開鍵をPKIで検証できる人)の秘密鍵で署名を作成→公開鍵で検証、という流れにすれば、第三者が作成した認証に関する情報を信頼することができる