認定、承認1


  • 認証と承認はAPIで最もよく使われる機能の一つである.
  • 専用のAPIおよび開示されたAPIは、基本的な認証および承認を必要とする.
  • 👉🏼 認証


    認証はプレイヤーの身元を確認するプログラム(プレイヤーの身元とパスワードを確認する).認証を行うためには,まずユーザIDとパスワードを生成できる機能が必要である.
    ::ログインプロセス
    1.プレイヤーのアイデンティティとパスワードを生成する
    2.ユーザーのパスワードを暗号化してDBに保存する(会員入力)
    3.ユーザーのログイン->ユーザー名とパスワードの入力
    4.ユーザーが入力したパスワードは、暗号化されていないデータベースに格納されているパスワードと照合されます.
    5.一致する場合、ログインは成功しました
    6.ログインに成功したら、アクセストークンをクライアントに送信する
    7.ユーザーがログインに成功した後、ログインするたびに要求をサーバに送信することなく、追加のアクセストークンを使用して要求を送信できます.

    👉🏻 JWT (Json Web Token)


    accesstokenという暗号化されたユーザ情報を付加してrequestを送信する
    //유저 로그인
    POST /auth HTTP/1.1
    Host: localhost:5000
    Content-Type: application/json
    
    {
        "username": "joe",
        "password": "pass"
    }
    
    //access token
    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
        "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGl0eSI6MSwiaWF0IjoxNDQ0OTE3NjQwLCJuYmYiOjE0NDQ5MTc2NDAsImV4cCI6MTQ0NDkxNzk0MH0.KPmI6WSjRjlpzecPvs3q_T3cJQvAgJvaQAPtk1abC_E"
    }
    これにより、サーバはaccesstokenを復号して対応するユーザ情報を取得します.
    上記のコードでは、eyjhgccioijiuzI 1 NiIsInR 5 CCI 6 IkpXVCJ 9.eyJpZGVudGl0eSI6MSwiaWF0IjoxNDQ0OTE3NjQwLCJuYmYiOjE0NDQ5MTc2NDAsImV4cCI6MTQ0NDkxNzk0MH0.KPmI 6 WSjrjlpzecpvs 3 q T 3 cJQAGJvaQAPtk 1 abc Eを復号すると、以下の情報が得られる.
    {
      user_id : 1 
    }
    得られたプレイヤーIDを解読することで、そのプレイヤーが誰であるかを確認することができる(もちろん実際には複数の情報が含まれている).このプログラムの目的は、そのプレイヤーがログインするたびに防止することです.accesstokenを生成する方法はいろいろありますが、その中で最も広く使われている方法はJWTです.
    名前の通り、JWTは、ユーザ情報を含むjsonデータを暗号化してクライアントとサーバとの間で交換する.

    👉🏾 権限


    承認は、ユーザが要求を実行する権利があるかどうかを確認するプログラムである.
    例えば、このユーザは顧客情報を閲覧することができるが、修正することができず、私ができる行動を制限する役割を果たすことができる(Melonの使用権がなければ1分しか聞けず、非会員であればコメント機能が制限される...).
    承認はJWTによっても実現できる.アクセスtokenによりユーザの情報を取得し、ユーザが持つ権限(permission)を確認することもできる.
    ::承認プロセス
    1.認証プロセスによってaccesstokenを生成します.accesstokenには、ユーザー情報を表示できる情報(ex.userid)が含まれている必要があります.
    2.ユーザが要求を送信する場合、accesstokenを付加して送信する.
    3.サーバは、ユーザが送信したaccesstokenを復号する.
    4.データを復号してユーザidを取得する.
    5.useridを使用して、データベース内のユーザーの権限を確認します.
    6.プレイヤーは要求を処理するのに十分な権限を持っている.
    7.ユーザに権限がない場合、許可されていない応答(401)または他のエラーコードが送信される.