IdentityServer4. Konsep dasar. OpenID Connect, OAuth 2.0, dan JWT

Dengan posting ini saya ingin membuka utas artikel yang didedikasikan untuk IdentityServer4. Kami mulai dengan konsep dasar.


Protokol otentikasi yang paling menjanjikan saat ini adalah OpenID Connect , dan OAuth 2.0 adalah protokol otentikasi (pemberian) . IdentityServer4 mengimplementasikan dua protokol ini. Itu dioptimalkan untuk masalah keamanan umum .


OpenID Connect adalah standar protokol dan otentikasi, itu tidak memberikan akses ke sumber daya (Web API), tetapi karena itu dikembangkan di atas protokol otorisasi OAuth 2.0 , memungkinkan Anda untuk mendapatkan parameter profil pengguna seolah-olah Anda memiliki akses ke sumber daya UserInfo .

JWT (JSON Web Token) adalah standar web yang mendefinisikan metode untuk mentransmisikan data pengguna dalam format JSON dalam bentuk terenkripsi.

OAuth 2.0 (RFC 6749) adalah standar protokol dan otorisasi. Ini memungkinkan aplikasi untuk mengakses sumber daya yang aman, seperti API Web.

Lihatlah diagram mengakses sumber daya yang dilindungi dan berurusan dengan langkah-langkah utama dan terminologi yang diterima:


is4


  1. . β€” . β€” Web API.


  2. User , , . . User ( ) β€” , , , (username) (password);


  3. IdentityServer4 (client_id, client_secret), (username, password) grant_type scope. ( ).


    OAuth 2.0 , , . client_id client_secret.
    lient_id β€” , IdentityServer4 .
    client_secret IdentityServer4. API. IdentityServer4 .

  4. , IdentiryServer4 access- ( ) (refresh-). . , .


  5. Web API, . 401, 403 498, , , .


  6. , Web API .




IdentityServer4 IdentityServer4 identity-, access- refresh-.


  • identity- ( ) β€” . , . .
  • access- ( ) β€” API ( ) .
  • refresh- ( ) β€” , .

:


Authenticatation Server Url β€” . URL-.


Resource Url β€” URL- , , , .



POST IdentityServer4


'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
'Expect': '100-continue'

:


'grant_type' : 'password',
'username' : login,
'password' : password,
'scope' : 'scope',
'client_id' : 'client_id',
'client_secret' : '{client_secret}'

username, password, client_id client_secret . :


grant_type β€” . , , API. password, OAuth 2.0 ( ).


OAuth 2.0 :


  • (authorization code). , .. (server-side applications), ;
  • (implicit). -, ;

, :


  • (resource owner). , . , . , OAuth 2.0.
  • . API. , , URI , , , API .

scope β€” . . , , , . .. scope scope . scope (, )


All Articles