Wenn Frau Aydin das Auftragsbuch öffnet, steht ihr Name in der Titelleiste. Sie hat sich nirgends angemeldet. Windows hat sie angemeldet, als sie morgens den Rechner entsperrte, und das Programm fragt Windows nur, wer da ist und in welcher Gruppe. Das ist Bruchstelle B3, und sie ist die bequemste des ganzen Programms: kein Anmeldedialog, kein Kennwort, kein Fehlerfall.

Im Web gibt es diese stille Hilfe nicht. Jede Anfrage an die Web-API aus Modul 4 kommt von irgendwoher, und der Server muss beweisbar wissen, von wem. Diese Lektion ersetzt die stille Anmeldung durch Microsoft Entra ID. Wie Anmeldung und Rechte in ASP.NET Core grundsätzlich funktionieren, steht in K2, Modul 2.6 (Anmelden und Rechte). Hier steht, was am Auftragsbuch besonders ist: drei Programme, die dieselbe Person erkennen müssen, und ein Übergang, in dem das alte und das neue Programm nebeneinander laufen.

Was die Windows-Anmeldung stillschweigend erledigt

So steht die Prüfung seit Lektion M1.2 im Programm:

C#
using System.Security.Principal;

namespace Brandt.Auftragsbuch
{
    // BRUCH B3: Wer ist das, und in welcher Gruppe? Das beantwortet Windows, still und ohne Anmeldeseite.
    internal static class Berechtigung
    {
        public static string Benutzer
        {
            get { return WindowsIdentity.GetCurrent().Name; }
        }

        // Disposition darf bearbeiten; alle anderen lesen nur. Ohne Gruppe in der Konfiguration darf jeder (lokale Entwicklung).
        public static bool DarfBearbeiten
        {
            get
            {
                string gruppe = Einstellungen.GruppeDisposition;
                if (string.IsNullOrEmpty(gruppe))
                {
                    return true;
                }

                return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(gruppe);
            }
        }
    }
}

Zwei Fragen beantwortet Windows hier, ohne dass jemand sie stellt. Die Tabelle zeigt, was aus jeder im Web wird:

Frage Windows-Programm Web
Wer ist das? WindowsIdentity.GetCurrent().Name Anmeldung bei Microsoft Entra ID über OpenID Connect; das Ergebnis ist ein Token
In welcher Gruppe? IsInRole("BRANDT\Disposition") ein Rollen-Anspruch (roles) im Zugriffstoken
Wer prüft? das Programm selbst, im eigenen Prozess die Web-API, bei jedem Aufruf
Wie lange gilt es? solange die Windows-Sitzung läuft solange das Token gilt, danach muss es erneuert werden
Was passiert ohne Anmeldung? geht nicht, der Rechner ist schon angemeldet die Antwort 401; die Person wird zur Anmeldung geschickt

Die zweite Zeile der Tabelle ist die wichtigste. Im Windows-Programm sitzt die Prüfung dort, wo auch die Oberfläche sitzt: Wer das Programm verändert, verändert die Prüfung. Microsofts Dokumentation zu Windows-Programmen mit geschützter Web-API sagt es für Büroprogramme ausdrücklich: Der Dienst bleibt die Sicherheitsgrenze für gemeinsame Daten, er prüft Token, erzwingt die Rechte und führt den Datenzugriff aus. Das Windows-Programm darf Daten zwischenspeichern, aber es entscheidet nichts. Das ist der Grund für die nächste Lektion, M5.2: Rechte gelten dort, wo die Daten liegen.