TIL 21.06.29
5727 ワード
今日やったこと
今日は昨日よりほっとした
初めて見た生手の概念が怖いようです.
ずっとそうだった.
初めて概念を学び、この概念の存在を理解することから、
脳の回転数はいつも違います
概念を学び始めたばかりの頃、本当に簡単な問題がたくさん解決できなかったとき
視野が狭くなるの?
この点は改めなければならない
Achievement goals
Token
セッション・ベースの認証は、サーバにユーザー情報を格納する認証方式です.
ただし、セッションはサーバに情報を格納し、サーバのパフォーマンスを低下させる可能性があります.
各リクエストには、サーバまたはデータベースをクエリーする必要があります.まだあります.
1台のサーバでしか使用できないため、複数のサーバを持つサービスにとって、セッションは非効率な認証方法です.
この限界を補う別の認証方式トークンがある.
日常生活では、コインは入場券のような役割を果たしています.
クライアントにトークンがある場合は、そのトークンがないユーザとは異なります.
サーバが提供するさまざまな機能を要求できます.
では、コインは巨大な力を持つ情報です.
JSON Web Token (JWT)
これまでCookieの制限機密情報はクライアントに格納できませんでした.
トークンは暗号化された状態でユーザ情報を格納することができ、暗号化されているのでクライアントに格納することができるという.
クライアントで自分のデータを表示できますが、変更は許可されません.
これらのデータを変更するには、サーバを介して完了する必要があります.
これを可能にしたのはjwtです.
jwtの構造
jwtの構造は3つの小節からなり,各小節はJSON形式で情報を表示する.
JSON形式の各部はBase 64符号化で表される.
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "someInformation",
"name": "phillip",
"iat": 151623391
}
サーバは、ユーザーが送信したHeaderとPayloadを使用して直接署名を作成します.
以前に送信した署名値と比較します.
値が異なると、偽造されたデータであることがわかります.
秘密鍵はサーバにしか保存できません.クライアントが絶対に知らない値です.
HMACSHA256(base64UrlEncode(header) + '.' + base64UrlEncode(payload), secret);
OAuth 2.0
OAuth2.0は、セキュリティリソースにアクセスするためにクライアントに権限(権限)を与えるプロセスを簡略化するプロトコルの1つである.
例えば、Webやアプリケーションでは、ソーシャルログイン認証方式が最近よく見られます.
NAVERログインとKACAログインを実現する簡単な方法は以下の通りです.
ユーザーのNAVERアカウント/パスワードを受信してログインすればいいです.
これは頼りにならない方法だ.
ユーザーにとって、3番目のサービスが自分のNAVERアカウントのパスワードを持つのは危険だからです.
では、どうやって実現するのでしょうか.OAuth 2.0は、他のサービスデータの使用を許可するプロセスであることを説明することができる.言い換えれば、他のサービスの会員情報を安全に利用する方法がより適切かもしれない.
用語
ResourceServer:リソースを持つサーバ(Naver、Kakao)
≪認可サーバー|Authorization Server|ldap≫:認証に関連するサーバーを専門に処理します.
≪リソース所有者|Resource Owner|ldap≫:リソース・サーバにリソースを所有するユーザー
クライアント:保護されたリソースにアクセスするリソース所有者を表すアプリケーション
ソーシャルログインロジックフロー
以前のソーシャルログイン認証では、アイデンティティ/パスワードを受信せずにデータを受信するにはどうすればいいですか?
OAuth 2.0はEXトークンを利用している.
私たちのサービスはNaverにEXトークンを発行して、あなたの要求に応答します.
そのコインでデータを取得することができます.
Grant type
Authorization Code Grant Type
最も一般的なタイプ
ユーザーの承認後にcodeを受け入れ、エクセストックと交換する方法
EXTAKENを直接受け取るとセキュリティが低下し、クライアントで秘密コードを盗まれやすくなります.
認証コード論理プロセス
Googleのソーシャルサイトを例にとると、ある顧客の登録を会員と仮定すると、
ユーザー(Resourceowner)がクライアント・データベースに格納するデータ
持ってくる場合なら、
ユーザーは、Googleのソーシャル会員登録ユーザーであることをクライアントサーバに証明する必要があります.
これにより、クライアントはユーザー会員情報を持つGoogle(Authorization Server)にユーザーを再起動します.
ユーザーはグーグルにクライアントへのアクセス権を要求した.
Googleはライセンスコードを提供し、クライアントはライセンスtokenを交換します.
クライアントは、認証トークンを使用してクライアントサーバにアクセスできます.
Refresh Token Grant Type
以前のライセンスコード論理ストリームがエクスポートトークンの有効期限が切れたときに実行された場合、非常に面倒です.
Refresh Tokenはこれらの煩雑な論理を減らすことができる.
クライアントはrefresh tokenを取得し、EXSESTOCKをグーグルに転送し、グーグルはrefresh tokenを確認した後、EXSESTOCKを再発行した.
コメントサイト
https://youtu.be/7abbNwuCXbg
https://opentutorials.org/course/3405
https://velog.io/@undefcat/OAuth-2.0-%EA%B0%84%EB%8B%A8%EC%A0%95%EB%A6%AC
https://yonghyunlee.gitlab.io/temp_post/oauth-authorization-code/
Reference
この問題について(TIL 21.06.29), 我々は、より多くの情報をここで見つけました
https://velog.io/@woals3000/TIL-21.06.29
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(TIL 21.06.29), 我々は、より多くの情報をここで見つけました https://velog.io/@woals3000/TIL-21.06.29テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol