ASP.NET Core : exemple OpenID Connect avec PKCE
Connexion avec Dazr Identity : OpenID Connect gratuit, hébergé dans l’UE, avec passkeys, codes par e-mail et comptes Google ou Microsoft derrière un seul bouton.
Il vous faut trois valeurs de la console développeurs : l’ID client, le secret client (applications serveur web uniquement) et l’URI de redirection que vous avez enregistrée. Le reste se trouve dans le document de découverte à l’adresse https://identity.dazr.eu/.well-known/openid-configuration.
ASP.NET Core
Utilisez le gestionnaire OpenID Connect intégré (Microsoft.AspNetCore.Authentication.OpenIdConnect, .NET 8 ou plus récent). Enregistrez une application serveur web avec l’URI de redirection https://app.example.eu/signin-oidc et, pour la déconnexion, https://app.example.eu/signout-callback-oidc. Trois réglages comptent : Dazr renvoie le code dans la query string, réglez donc ResponseMode sur query (le gestionnaire utilise form_post par défaut) ; PKCE est obligatoire ; et les ID tokens sont signés en ES256.
// Program.cs
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
options.Authority = "https://identity.dazr.eu";
options.ClientId = builder.Configuration["Dazr:ClientId"];
options.ClientSecret = builder.Configuration["Dazr:ClientSecret"];
options.ResponseType = OpenIdConnectResponseType.Code;
options.ResponseMode = OpenIdConnectResponseMode.Query;
options.UsePkce = true;
options.Scope.Clear();
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("email");
options.GetClaimsFromUserInfoEndpoint = true;
options.SaveTokens = true; // keeps the ID token for sign-out (id_token_hint)
options.MapInboundClaims = false; // keep sub, email and name as they are
options.TokenValidationParameters.NameClaimType = "name";
options.TokenValidationParameters.ValidAlgorithms = new[] { "ES256" };
});
builder.Services.AddAuthorization();
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.MapGet("/signin", () => Results.Challenge(new() { RedirectUri = "/" }));
app.MapGet("/signout", () => Results.SignOut(new() { RedirectUri = "/" },
new[] { CookieAuthenticationDefaults.AuthenticationScheme, OpenIdConnectDefaults.AuthenticationScheme }));
app.Run();
Le sub Dazr est User.FindFirst("sub")?.Value. Enregistrez-le comme clé du compte. Gardez le client secret dans les user secrets ou un coffre, jamais dans appsettings.json.
sub est pairwise : le même pour chaque application de votre organisation, différent pour toute autre organisation. Il ne change jamais pour une personne, alors qu’une adresse e-mail peut changer. Enregistrez sub comme clé du compte et traitez email comme une donnée de contact.
Plus pour les développeurs
Documentation développeursTous les guides d’intégrationToute bibliothèque OpenID ConnectTarifs