IdentityServer4. Grundlegendes Konzept. OpenID Connect, OAuth 2.0 und JWT

Mit diesem Beitrag möchte ich einen Artikel-Thread öffnen, der IdentityServer4 gewidmet ist. Wir beginnen mit den Grundkonzepten.


Das derzeit vielversprechendste Authentifizierungsprotokoll ist OpenID Connect , und OAuth 2.0 ist das Authentifizierungsprotokoll (Granting- Protokoll) . IdentityServer4 implementiert diese beiden Protokolle. Es ist für häufig auftretende Sicherheitsprobleme optimiert .


OpenID Connect ist ein Protokoll- und Authentifizierungsstandard, der keinen Zugriff auf Ressourcen (Web-API) gewährt, sondern seitdem Es wurde auf der Grundlage des OAuth 2.0- Autorisierungsprotokolls entwickelt und ermöglicht es Ihnen, Benutzerprofilparameter abzurufen, als ob Sie Zugriff auf die UserInfo- Ressource hätten .

JWT (JSON Web Token) ist ein Webstandard, der eine Methode zum Ăśbertragen von Benutzerdaten im JSON-Format in verschlĂĽsselter Form definiert.

OAuth 2.0 (RFC 6749) ist ein Protokoll- und Autorisierungsstandard. Es ermöglicht Anwendungen den Zugriff auf sichere Ressourcen wie die Web-API.

Sehen Sie sich das Diagramm fĂĽr den Zugriff auf eine geschĂĽtzte Ressource an und behandeln Sie die Hauptschritte und die akzeptierte Terminologie:


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