Zenn
Open5

Nestjs / GraphQLのメモ

redamoonredamoon

Nestjs/GraphQL の勉強メモを書いていく。業務で必要なのでTODOアプリを作ってみた感想と用語周りの勉強

redamoonredamoon

用語

IoC(制御の反転):Inversion of Control

ソフトウェア設計における原則の一つ。
コンポーネント間の依存関係を外部から注入することで、コンポーネント自身が依存関係を管理することを避ける方法です。

IoCは、DI(依存性注入)と関連が深く、DIはIoCの実装手段の一つ

DI (依存性注入):Dependency Injection

https://zenn.dev/tokium_dev/articles/dependency-injection-watanabe

DTO:Data Transfer Object

https://zenn.dev/miya_tech/articles/8a35f277c22482

redamoonredamoon

JWT

  • JSON Web Token の略称で、JSONの形式をした認証情報
  • 電子署名により、改ざんの検知が可能
  • 認証用のトークンとして利用される

https://jwt.io/

3つの要素

  • ヘッダ
    • ハッシュアルゴリズムの情報などのメタデータ
  • ペイロード
    • 認証対象の情報で、ユーザー名やIDなど任意の情報
  • 署名
    • ヘッダとペイロードをエンコードしたものに秘密鍵を加えてハッシュ化したもの

要素ごとにBase64エンコードされている

redamoonredamoon

JWTのメリット

  • 署名があるため、改ざんチェックが可能
  • 有効期限をつけることでセキュアなToken発行
  • 状態をサーバで保持しなくてよい(セッションとは異なる)
  • 任意のデータをTokenに含めることができる
redamoonredamoon

JWTの認証

JWTの取得

  1. email / passwordなどをサーバに送る
  2. 認証情報の検証を行う
  3. Token生成
  4. Tokenを返却する
  5. ユーザは、トークンをCookieなどに保存する

JWTの認証

  1. 受け取ったTokenの検証
  2. IDとユーザ名などを返却する
ログインするとコメントできます