[HTTP]http-認証/認証について(2)


掘れば掘るほど面白いhttp認証/承認🔐


djangoは認証/認証(bcrypt,JWT)をどのように実施するか.
refresh tokenとOAuthの概要
0
資格認定/資格認定の概要
  • 認証、認証:ユーザーの識別(ログインとパスワードの確認)
  • アカウントの作成(登録コスト)>データベースの作成前に、手順
  • を実行する必要があります.
  • の場合のパスワードは暗号化ストレージ(bcryptを使用)
  • である.
  • ログイン時にbcryptを使用してアイデンティティ/パスワードを比較し、アカウント
  • を確認します.
  • または認証:ユーザーのアクセス権を検証します(つまり、リクエストを要求する権限があるかどうか).
  • が最初にログインすると、サーバはJWT、
  • を発行します.
  • クライアントこのJWTをヘッダに要求
    (httpの無状態属性を無視してログイン状態を維持できる)
  • 1
    How to use bcrypt
    サーバであっても,ユーザのパスワードを~として保存することはできない.
    △いつ黒くなるか知っていますか.
    (法律上-個人情報保護法第7条も規定されています)
    したがって,djangoでAPIを実装する場合,ユーザのパスワードを受信するとbcryptというライブラリで暗号化する必要がある.
    bcryptはsalting,key-stretchingを含む.
    import bcrypt
    
    bcrypt.hashpw(data['password'].encode('utf-8'), bcrypt.gensalt()).decode('utf-8')
    >>> DB에 저장할 때는, decode까지 해서 str 형태로 저장한다 (파이썬 버전에 따라 다름)
    そして、パスワードを確認するときは、以下のように記入してください.
    どちらもbyte形式でなければならないため、データベース内の暗号化パスワードも符号化されstr>byteに変換されます.
    bcrypt.checkpw(사용자로부터 입력 받은 패스워드.encode('utf-8'), DB에 저장된 암호화된 패스워드.encode('utf-8'))
    2
    How to create JWT in python?
    JWTはヘッダpayload.署名で構成されており、Pythonで作成する際にはペイロードとSECRET KEY、アルゴリズム情報が必要です.
    import pyjwt
     
    SECRET = SECRET_KEY 
    ALGORITHM = 'HS256'
    
    acces_token =jwt.encode({'id':1}, SECRET, algorithm = ALGORITHM)
    >>> pyjwt 버전에 따라 결과물이 byte 혹은 str일 수도 있음 
    ログイン時に、そのユーザに対して上記tokenを生成し、応答時に送信する.クライアントは、このトークンを出入り証として使用できるようになりました.
    暗号化ではなく符号化されているので、決して機密情報は使わず、もちろんJWTにも入らない.
    初回ログイン後、ユーザが再びAPIアクセス要求を発行すると、サーバはtokenを次のように復号してアクセス権限を確認する.
    そして、decode時入力algorithm =algorithms =である.
    jwt.decode(access_token, SECRET, algorithms = ALGORITHM) 
    >>> {'id':1}
    3
    accesstokenには寿命がある.
    では、期限が切れるたびに、ユーザーは再取得する必要がありますか?
    そうではありません.refresh tokenを使ってもいいです.
    https://simpleisbetterthancomplex.com/tutorial/2018/12/19/how-to-use-jwt-authentication-with-django-rest-framework.html
    ->この文書では、サーバはaccess tokenを転送すると同時にrefresh tokenを転送します.クライアントはまずaccess tokenを使用し、有効期間が終了したらrefresh tokenを使用します.(サーバ側の具体的な提供内容はそれぞれ異なる)
    refresh tokenの有効期間が終了した後、ユーザーは再び承認プロセスを経なければならない.
    4
    OAuthとは?
    画像ソース:RFC 5849、https://www.rfc-editor.org/rfc/rfc5849
    Google Identityプラットフォームまで、GoogleはOAuth 2.0プロトコルを通じて認証/認証を行います.OAuthは認証/認証標準フレームワークであり、グーグル、ココア、NAVERサーバを通じてアクセストークンを受信し、ユーザーがサードパーティサービス/APIにアクセスできるようにする.
    詳しくは次編で