• Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off
Reading...
Front

Card Range To Study

through

image

Play button

image

Play button

image

Progress

1/14

Click to flip

Use LEFT and RIGHT arrow keys to navigate between flashcards;

Use UP and DOWN arrow keys to flip the card;

H to show hint;

A reads text to speech;

14 Cards in this Set

  • Front
  • Back

**هدف نهایی sign in

هدف اینه قرارگرفتن calim ها تو درخواست های بعدی تا authorization بفهمه کی رو راه بده کی رو نده

کل داستان sign in

چک کردن یوزر پسورد و دیتابیس و اگه درست بود


1- حالت کوکی:قراردادن claim ها توی کوکی از سمت سرور که خود به خود انجام میشه


با signinmanager.passwordsignin همه اینکارا خودبخود انجام میشه( داخلش checkpasswordsignin و


httpContext.Signin


رو فراخوانی میکنه خودش)


2- ایجاد توکن و قراردادن دستی claim ها و استفاده از توکن که سمت کلاینت انجام میشهتا(signinmanager. Checkpasswordاینجا فقط یوزرپسورد برامون چک میکنه بقیه کارا دستیه)


*** هدف نهایی که که اینه که یوزر از این بعد درخواست هاش با claim ها بیاد تا authorization Middleware بدونه راه بده یا نده

هنگام رجیستر

UserManager.CreateAsyncبعدش باید ایمیل یا حالا شماره تلفن طرف که claim کرده رو مطمئن بشیم و confirm اش ون بکنیم

Identity

Signinmanagerدر خالت کوکی بعد از چک کردن تو دیتابسس پشت صحنه میاد httpContext.Signinو httpcontext.Signout رو فراخوانی میکنه

توکن رو یه حا ذخیره کن هربار مجبور نباشی بری بگیریش

اگه سروری تو session ذخیره میکنی(که id اش میره تو کوکی)اگه کلاینتی میتونی تو localstorage ذخیره کنی

رابطه ها

یوزر از جنس claimsproncipal هست که میتونه چندتا کارت شناسایی یا همون identity داشته باشه و هر identity هم میتونه چندتا claims داشته باشه مثل مشخصات تو گواهینامه

Signinmanager.passwordsignin in cookie based automatic does these jobs

1-check user pass


2- get claims of users


3- put claims in cookie

Signinmanager.checkpassword in token does one thing

Only one thing Check user and pass


(we should call getclaimsasync to get the claims and generate the token. sending the next requests of client should.be done with this claims in token manually)

**

چک کردن یوزر پس گرفتن کلیم ها و قراردادنش

مستحبه در توکن

Name o email o expiresAt


رو بذاری که کلاینت بتونه اسم و ایمیل کاربر رو بهش نشون بده

Third party authentication DI

services.AddAuthentication()


.AddGoogle(o => { o.ClientId = ""; o.ClientSecret = ""; })


.AddFacebook(o => { o.ClientId = ""; o.ClientSecret = ""; });

Two factor or mfa

در دو یا چند مرحله auth انجام می‌شود. یک یوزر و پسورد و یک مرحله یک کدی که فقط دارنده حساب میتونه بده


1- email or phone 2fa


2- mfa with Authenticator( در ابتدا یک کلیدی باهم به اشتراک میذارند و در طول زمان باهم یک هش رو باهمون کلید تولید خواهند کرد)

UserClaimsPricipalFactory

تابع مهم generateclaimsAsync رو داره که بعد از چک یوزر پسورد calim های اسم و ایمیل و id و amr رو میزنه بطور دیفالت و همچنین claim هایی که اضافه کردیم رو اول با


Usermanager.getclaimsasync


میگیره و اضافه شون میکنه

Jwsltsecuritytokenhandler

دوتابع مهم


1-createToken


2-writeToken