IdentityServer4. Concepts de base. OpenID Connect, OAuth 2.0 et JWT

Avec ce post, je veux ouvrir un fil d'article dédié à IdentityServer4. Nous commençons par les concepts de base.


Le protocole d'authentification le plus prometteur est actuellement OpenID Connect , et OAuth 2.0 est le protocole d' authentification (octroi) . IdentityServer4 implémente ces deux protocoles. Il est optimisé pour les problèmes de sécurité courants .


OpenID Connect est un protocole et une norme d'authentification, il ne donne pas accès aux ressources (API Web), mais depuis il a été développé en plus du protocole d' autorisation OAuth 2.0 , il vous permet d'obtenir des paramètres de profil utilisateur comme si vous aviez accès à la ressource UserInfo .

JWT (JSON Web Token) est une norme Web qui définit une méthode de transmission des données utilisateur au format JSON sous forme cryptée.

OAuth 2.0 (RFC 6749) est un protocole et une norme d'autorisation. Il permet aux applications d'accéder à des ressources sécurisées, telles que l'API Web.

Jetez un œil au schéma d'accès à une ressource protégée et traitez les principales étapes et la terminologie acceptée:


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