Defcos SNSプロジェクト:トークンとJWTトークン


Defcos SNSプロジェクトで知り合ったTokenをまとめました

コイン枚


なぜ多くのWebサイトがトークンベースの認証を選択しているのか


ステータスサーバなし


ステータスレスサーバは、クライアント(ユーザ)リクエスト時にクライアントのステータスを維持し、サービスを提供するために使用するステータスレスサーバとは異なり、サーバはクライアントからのリクエストのみを処理するため、クライアントとサーバの間に接続されていません.これにより、サーバの拡張性が向上します.

認証情報を他のアプリケーションに転送できます


典型的な例はOuthであり、Facebookやグーグルなどのソーシャルアカウントを使用して他のWebサービスにログインすることができます.

セキュリティ


Cookieの使用による脆弱性を補う

モバイルアプリケーション


JWTトークン


JWTトークンは主に会員認証、情報交流に用いられ、ヘッダー、情報、署名の3つの部分に分かれている.

Header


Headerには、トークンタイプ(JWT)とハッシュアルゴリズムの2つの情報が含まれています.

情報(ペイロード)


トークンは、情報の一部であり、一対のname/valueからなる複数のクレームを含むことができる.
クレームは大きく分けて登録(登録)、公開(公開)、私有(非公開)の3種類があります.

登録済みクレーム(登録済み)


登録済みクレーム(登録済み)は名前付きで、情報をマークするために使用され、選択して使用できます.登録されたクレーム名は次のとおりです.
iss(発行者)、sub(トピック)、aud(参加者)、exp(期限切れ)、nbf(期限切れ)iat(issed at)、jti(JWT一意識別子)

公開クレーム


公開クレームは、競合を防止するためにURLの形式で命名されます.("https://.../jwt_claims/...": true)

非公開クレーム


非公開クレームは、双方の合意(通常はクライアント/サーバ)で使用されるクレーム名です.

に署名


署名はヘッダの符号化値と情報の符号化値を統合し,秘密鍵でハッシュ生成する.このようなハッシュは、16進数64に符号化されるべきである.

Defcosプロジェクトで使用されるJWTトークンハッシュ

 async function addPostLike() {
    try {
      const response: any = await axios.post(
        `${API주소}`,
        {
          postId: props.id,
        },
        { headers: { Authorization: `Bearer ${token}` } }
      );
      setPostLike(response.data._id);
      setPostLikeNumber(postLikeNumber + 1);
    } catch (error) {
      console.error(error);
    }
  }

タグ値の取得


タグからユーザ値を取得するconst userId = JSON.parse(atob(token.split(".")[1])).user._id;参照サイトVELOPERT.LOG