ASP.NET Core: OpenID-Connect-Beispiel mit PKCE
Anmeldung mit Dazr Identity: kostenloses OpenID Connect mit Hosting in der EU, mit Passkeys, E-Mail-Codes und Google- oder Microsoft-Konten hinter einem Button.
Sie brauchen drei Werte aus der Entwicklerkonsole: die Client-ID, das Client-Secret (nur für Webserver-Apps) und die registrierte Weiterleitungs-URI. Alles Weitere steht im Discovery-Dokument unter https://identity.dazr.eu/.well-known/openid-configuration.
ASP.NET Core
Nutzen Sie den eingebauten OpenID-Connect-Handler (Microsoft.AspNetCore.Authentication.OpenIdConnect, .NET 8 oder neuer). Registrieren Sie eine Web-Server-App mit der Weiterleitungs-URI https://app.example.eu/signin-oidc und für die Abmeldung https://app.example.eu/signout-callback-oidc. Drei Einstellungen zählen: Dazr gibt den Code im Query-String zurück, setzen Sie ResponseMode also auf query (der Handler nutzt standardmäßig form_post); PKCE ist Pflicht; und ID-Tokens sind mit ES256 signiert.
// 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();
Das Dazr-sub ist User.FindFirst("sub")?.Value. Speichern Sie es als Kontoschlüssel. Bewahren Sie das Client-Secret in User Secrets oder einem Vault auf, nie in appsettings.json.
sub ist pairwise: gleich für jede App Ihrer Organisation, anders für jede andere Organisation. Er ändert sich für eine Person nie, eine E-Mail-Adresse dagegen schon. Speichern Sie sub als Schlüssel des Kontos und behandeln Sie email als Kontaktangabe.
Mehr für Entwickler
EntwicklerdokumentationAlle IntegrationsanleitungenJede OpenID-Connect-BibliothekPreise