Fermer

avril 1, 2025

Comprendre et mettre en œuvre OAuth2 et OpenID Connect dans .NET / Blogs / Ferfient

Comprendre et mettre en œuvre OAuth2 et OpenID Connect dans .NET / Blogs / Ferfient


L’authentification et l’autorisation sont deux aspects cruciaux du développement Web. Dans les applications modernes, il est essentiel de s’assurer que les utilisateurs sont ce qu’ils disent être (authentification) et avoir la permission d’accéder à des ressources spécifiques (autorisation). OAuth2 et OpenID Connect sont deux protocoles largement utilisés qui aident à atteindre les deux objectifs.

Qu’est-ce que OAuth2?

OAuth2 (Open Authorization 2.0) est un cadre d’autorisation qui permet aux applications tierces d’accéder aux ressources d’un utilisateur sans les obliger à partager ses informations d’identification (nom d’utilisateur et mot de passe). Il permet accès déléguéce qui signifie que les utilisateurs peuvent accorder un accès contrôlé spécifique à leurs données sans révéler leurs informations de connexion.

OAuth2 est couramment utilisé pour permettre aux utilisateurs de s’authentifier via leurs comptes existants à partir de services comme Google, Facebook ou Microsoft. Cela permet aux utilisateurs de se connecter en toute sécurité aux applications sans exposer leurs informations d’identification sensibles à la demande de demande.

Concepts clés dans oauth2

  1. Propriétaire de la ressource: L’utilisateur qui possède les données et accorde l’autorisation à l’application client.
  2. Application client: L’application demandant l’accès aux ressources de l’utilisateur (par exemple, une application mobile ou une application Web).
  3. Serveur d’autorisation: Le serveur responsable de l’authentification de l’utilisateur et de l’émission de jetons d’accès.
  4. Serveur de ressources: Le serveur qui héberge les ressources protégées et valide les jetons d’accès fournis par le client.
  5. Jeton d’accès: Un jeton émis par le serveur d’autorisation qui accorde au client l’accès aux ressources protégées.

Flux oauth2

  1. L’utilisateur est redirigé vers le serveur d’autorisation (par exemple, le serveur OAuth2 de Google).
  2. L’utilisateur authentifie et accorde l’autorisation à l’application client pour accéder à des données spécifiques (par exemple, son profil Google).
  3. Le serveur d’autorisation émet un code d’autorisation.
  4. L’application client échange le code d’autorisation contre un jeton d’accès.
  5. L’application client utilise le jeton d’accès pour demander des ressources protégées du serveur de ressources.

Avantages clés de OAuth2

OAuth 2.0 est un cadre d’autorisation largement adopté qui permet aux applications tierces d’accéder aux ressources des utilisateurs sans partager les informations d’identification. Il fournit un moyen sécurisé et évolutif de gérer l’autorisation. Voici quelques avantages clés de OAuth 2.0:

  1. Contrôle d’accès granulaire: Permet à l’utilisateur de définir des autorisations à grain fin pour des ressources spécifiques et d’accorder un accès à des applications tierces à certaines données ou actions sans fournir un accès général à toutes leurs informations.
  2. Sécurité améliorée: Protection des informations d’identification et accès portée.
  3. Prise en charge de plusieurs types de subventions: Prend en charge plusieurs types de subventions (par exemple, code d’autorisation, implicite, informations d’identification des clients et informations d’identification du mot de passe du propriétaire des ressources)
  4. Authentification basée sur les jetons: Utilise des jetons d’accès, qui sont temporaires et peuvent être étendus et limités dans le temps.
  5. Expiration et révocation des jetons: Les jetons émis par OAuth 2.0 ont un temps d’expiration, ce qui permet de limiter la durée de l’accès.
  6. Interopérabilité: OAuth 2.0 est une norme ouverte bien définie qui est largement prise en charge par divers fournisseurs de services et applications, assurant une intégration en douceur entre différents systèmes et plates-formes.

Notamment

Qu’est-ce que OpenID Connect?

OpenID Connect (OIDC) est une couche d’identité construite au-dessus de OAuth2. Il est utilisé pour vérifier l’identité de l’utilisateur et obtenir ses informations de profil. Bien que OAuth2 soit utilisé pour l’autorisation, OpenID Connect étend OAuth2 pour inclure l’authentification.

En termes simples, OAuth2 dit au client ce que l’utilisateur est autorisé à faire (autorisation), tandis qu’OpenID Connect indique au client qui est l’utilisateur (authentification).

Concepts clés dans OpenID Connect

  1. Jeton ID: Il s’agit d’un JWT (jeton Web JSON) qui contient des informations sur l’utilisateur authentifié. Il est émis par le serveur d’autorisation et peut être utilisé par l’application client pour authentifier l’utilisateur.
  2. Demande d’authentification: Le client envoie une demande au serveur d’autorisation pour authentifier l’utilisateur et recevoir un jeton ID avec un jeton d’accès.

OAuth2 et OpenID Connect dans .NET

Pour une meilleure compréhension, nous nous intégrerons à Google en tant que fournisseur OAuth2 et OpenID Connect.

Étape 1: Créez un projet de développeur Google

1.1 Ouvrez la console Google Cloud

    • Ouvrez votre navigateur et accédez à Console Cloud Google.
    • Connectez-vous à votre compte Google. Si vous n’êtes pas déjà connecté, vous serez invité à vous connecter.

1.2 Créer un nouveau projet

    • En haut à gauche de la page, vous verrez le logo Google Cloud Platform. À droite du logo, il y aura une liste déroulante qui pourrait dire quelque chose comme «Sélectionnez un projet» ou «Mon premier projet».
    • Cliquez sur cette liste déroulante. Une nouvelle fenêtre apparaîtra, montrant une liste de vos projets existants.
    • En haut à droite de la fenêtre, vous verrez un bouton qui dit «nouveau projet». Cliquez sur ce bouton.

1.3 Remplissez les détails du projet

    • Nom du projet: Entrez un nom pour votre projet.
    • Après avoir rempli les détails, cliquez Créer.

Une fois votre projet créé, vous serez redirigé vers le tableau de bord du projet nouvellement créé dans la console Google Cloud.


Étape 2: activer l’API Google+

2.1 Accédez à la bibliothèque API & Services

    • Dans la barre latérale gauche, cliquez sur l’icône du hamburger (trois lignes horizontales) pour ouvrir le menu de navigation.
    • Dans le menu, allez dans API et services> bibliothèque.

2.2 Recherche de l’API Google+

    • Dans la barre de recherche en haut de la page de la bibliothèque, tapez API Google+ et appuyez sur Entrée.
    • Cliquez sur le API Google+ résultat.
    • Ensuite, cliquez sur le Activer bouton pour activer cette API pour votre projet.

Étape 3: Créer des informations d’identification OAuth2

3.1 Accédez à la page des informations d’identification

    • Dans la barre latérale gauche, sous API et servicescliquez sur Informations d’identification.

3.2 Créer un ID client OAuth 2.0

    • Sur la page des informations d’identification, cliquez sur le Créer des informations d’identification bouton en haut et sélectionnez ID du client OAuth 2.0.

3.3 Configurer l’écran de consentement OAuth

    • Avant de créer les informations d’identification OAuth, vous devez configurer l’écran de consentement OAuth. Cliquez sur le Écran de consentement OAuth languette.
    • Choisir Externe comme type d’utilisateur.

3.4 Remplissez les champs requis

    • Nom de l’application: Entrez un nom pour votre application.
    • Email de support utilisateur: Fournissez votre adresse e-mail.
    • Coordonnées du développeur: Entrez votre adresse e-mail.
    • Faire un clic Économiser et continuer pour procéder.

3.5 Créez l’ID Client OAuth 2.0

    • Après avoir terminé la configuration de l’écran de consentement OAuth, il vous sera demandé de configurer les informations d’identification OAuth.

    • Sélectionner Application Web comme type d’application.

    • Ajouter ce qui suit URI redirigé autorisé:

      Exemple de redirection URI (si votre application fonctionne sur https://localhost:{{portnumber}}):

    • Faire un clic Créer.


Étape 4: Obtenez un identifiant client et un secret client

4.1 Créer des informations d’identification OAuth

Après avoir terminé la configuration OAuth 2.0 et cliquer Créerune nouvelle fenêtre apparaîtra avec votre ID client et Secret client.

4.2 Copier et stocker les informations d’identification

Il est crucial de Copiez à la fois l’ID client et le secret du client et les stocker en toute sécurité. Ces informations d’identification seront nécessaires pour intégrer l’authentification Google dans votre application et assurer un accès sécurisé aux comptes Google des utilisateurs.

4.3 Utilisez les informations d’identification de votre application

Vous utiliserez ces informations d’identification dans votre application pour authentifier les utilisateurs et interagir avec les services de Google. Gardez-les en sécurité, car ils permettent d’accéder aux données des utilisateurs sensibles.

Configurer le projet .NET Core:

    1. Créez une nouvelle application Web ASP.NET Core à l’aide du modèle pour l’application Web (modèle-View-Controller).
    2. Ajoutez le package Microsoft.aspnetcore.authentication.google Nuget.
    3. Configurer OAuth2 et OpenID Connect dans Program.cs

Dans le fichier programme.cs, configurez le middleware d’authentification pour utiliser OAuth2 et OpenID Connect de Google:

// Add authentication services (Google login, etc.)

builder.Services.AddAuthentication(options =>

{

options.DefaultScheme = "Cookies";

options.DefaultChallengeScheme = GoogleDefaults.AuthenticationScheme;

})

.AddCookie()

.(options =>

{

options.ClientId = "client-id";

options.ClientSecret = "client-secret";

options.CallbackPath = "/signin-google";

});


app.UseAuthentication();

app.UseAuthorization();
  • AddGoogle permet à OAuth2 et OpenID Connect en utilisant Google comme fournisseur d’identité.
  • SaveTokens = True garantit que le jeton d’accès et le jeton ID sont enregistrés.

Le .Addgoogle La méthode fait partie du framework Core ASP.NET, introduit dans .NET 9.0 à des fins d’authentification (généralement dans le contexte de la connexion OAuth 2.0 ou OpenID pour l’intégration de la connexion Google). Si nous utilisons une version de .NET avant 9.0, nous n’aurons pas accès directement à cette méthode.

Pour gérer les versions inférieures de .NET (par exemple, .NET 5.0, .NET 6.0 ou .NET 7.0) et intégrer l’authentification Google, nous devrons utiliser l’ancienne approche fournie par le Addoauth ou addgoogle Méthode des versions précédentes. Voici comment nous pouvons l’implémenter pour .NET 6.0 ou moins:

.AddOAuth("Google", options =>

{

options.ClientId = Configuration["Google:ClientId"];

options.ClientSecret = Configuration["Google:ClientSecret"];

options.CallbackPath = new PathString("/signin-google");

options.AuthorizationEndpoint = "https://accounts.google.com/o/oauth2/auth";

options.TokenEndpoint = "https://oauth2.googleapis.com/token";

options.UserInformationEndpoint = "https://www.googleapis.com/oauth2/v3/userinfo";

options.Scope.Add("openid");

options.Scope.Add("profile");

options.Scope.Add("email");

options.SaveTokens = true;

}

Étape 5: Créer un contrôleur pour gérer l’authentification

Créez un contrôleur simple pour gérer la connexion et afficher le profil de l’utilisateur authentifié.

  • L’action de connexion redirige les utilisateurs vers la page de connexion de Google.
  • L’action de déconnexion décortique l’utilisateur.
  • L’action de profil le principal authentifié et affiche le jeton ID.

La gestion de l’identité dans ASP.Net Core s’appuie fortement sur OAuth 2.0 ou OpenID Connectez-vous pour l’authentification des utilisateurs. Le Profil Action récupère les informations utilisateur, généralement stockées dans les réclamations, telles que le jeton ID, et les utilise pour la gestion des utilisateurs. Avec la configuration appropriée et la gestion des jetons, l’application peut gérer en toute sécurité l’identité de l’utilisateur, récupérer les données de profil et afficher des informations pertinentes à l’utilisateur.

Étape 6: Ajouter des vues pour afficher les informations de l’utilisateur

Ajoutez une vue simple pour afficher le profil de l’utilisateur dans les vues / compte / profil.cshtml:

Étape 7: Exécuter l’application

Exécuter l’application en utilisant:

Dotnet Run

Conclusion

OAuth2 et OpenID Connect sont de puissants protocoles pour gérer l’authentification et l’autorisation dans les applications modernes. En intégrant ces protocoles dans les applications .NET, nous pouvons authentifier en toute sécurité les utilisateurs, déléguer l’accès aux ressources et nous assurer que seuls les utilisateurs autorisés peuvent accéder aux services.

En suivant les étapes, nous devons maintenant avoir une compréhension de base de la façon d’implémenter OAuth2 et OpenID Connect dans une application .NET. Ces concepts sont essentiels pour tout développeur travaillant sur la création d’applications Web sécurisées, évolutives et modernes.






Source link