Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Passierschein, bitte – sichere und skalierbare ...

Passierschein, bitte – sichere und skalierbare Authentifizierung mit Microsoft Entra ID

Microsoft Entra ID (formerly Azure AD) offers a robust solution for the authentication and authorization of users in modern applications. By using OAuth and OpenID Connect, role and group authorizations as well as user-defined scopes can be implemented, allowing granular control over access to resources. .NET applications can use the functions of the Microsoft Identity Platform to ensure scalable and user-friendly authentication that meets the requirements of today's applications.

Daniel Lindemann

September 19, 2024
Tweet

More Decks by Daniel Lindemann

Other Decks in Programming

Transcript

  1. AGENDA ▪ Identity Provider ▪ Entra ID und Microsoft Identity

    Platform ▪ API & Service-To-Service Calls ▪ Autorisierung
  2. ABOUT ME Daniel Lindemann Begeisterter .NET-Entwickler und Berater mit einer

    seltsamen Vorliebe für die Optimierung, Automatisierung und Containerisierung von Anwendungen. Was ich so mache: ▪ Microsoft Azure ▪ Cloud-native & Serverless Architekturen ▪ Container Technologien ▪ Generative AI ▪ DevOps - Dev in der Nacht, Ops am Tag E-Mail: [email protected] Web: https://www.dlindemann.de LinkedIn: https://linkedin.com/in/daniel-lindemann
  3. IDENTITY PROVIDER Oldschool App Login Username Salt Password Daniel q86vvHJGtGP7

    d1c9a9d96ec1b245bd976930be6b9ab3 Ben 68T9LeXrAosY 2f54339145d255a8aa8facb2ead90ea5 Maik 2LhxuMmQJW7z 9b445225879be5907824c6af9297982f … … … … … … SessionID: 8ghsd0fh29fhdjkhjhfd98f9fjf Generate Hash Get Generated “Salt” Compare salted Hash
  4. IDENTITY PROVIDER Oldschool App Login - Probleme ▪ Session Cookie

    über mehrere Instanzen nicht verfügbar ▪ API-Calls mit Autorisierung ▪ API URL muss selbe Domain wie App haben ▪ API-Calls mit API Keys ▪ Kein Single Sign-on
  5. IDENTITY PROVIDER Was ist ein Identity Provider? Ein Identity Provider

    (IdP) ist ein Dienst, der Identitätsinformationen für Benutzer bereitstellt und die Authentifizierung dieser Benutzer vornimmt. Authentifizierung Single Sign-on (SSO) Benutzer- verwaltung Protokolle Multi-Faktor Authentifizierung Sicherheit / Datenschutz Integration Zugriffs- steuerung
  6. IDENTITY PROVIDER Token-based Authorization ▪ Tokens sind signiert ▪ Tokens

    haben eine Gültigkeitszeitspanne ▪ Bei der Benutzung von Tokens müssen keine Roundtrips zu Identity Provider oder Datenbanken gemacht werden ▪ Tokens können „erfrischt“ werden ▪ Benötigt zusätzlichen Refresh Token ▪ Tokens haben das Format JWT (JSON Web Token) ▪ Tokens beinhalten Informationen zum Benutzer ▪ Tokens beinhalten Claims: ▪ Wie sie verifiziert werden ▪ Wo sie herkommen ▪ Wo sie benutzt werden können ▪ Wer authorisiert ist ▪ Was mit ihnen gemacht werden kann ▪ Schuhgröße ▪ Und vieles mehr …
  7. ENTRA ID App Beispiel: Website & API Entra ID als

    Identity Provider Razor Pages Web API
  8. ENTRA ID App Registration ▪ Registierung eines Client (Applikation) in

    Entra ID ▪ Repräsentation einer Applikation ▪ Für Entwickler ▪ Konfiguration der Authentifizierung ▪ App ID / Client ID ▪ Secret / Zertifikat ▪ Redirect URI ▪ Scopes / Permissions
  9. ENTRA ID Unterschied Single Tenant & Multi Tenant Multi Tenant

    App ▪ Nutzung von mehreren Entra ID Mandanten ▪ Zugriff für Benutzer aus mehreren Organisationen ▪ App muss so gestaltet sein, dass sie mit den Identitäten und Zugriffsanforderungen verschiedener Mandaten umgehen kann ▪ Beispiel: Öffentliche Anwendung, SaaS-Anwendung ▪ Vorteile: ▪ Flexibilität, um Kunden und Benutzer aus verschiedenen Organisationen zu bedienen ▪ Einfache Freigabe einer App über viele Unternehmen hinweg, ohne dass jede Organisation eine eigene Instanz der App benötigt Single Tenant App ▪ App innerhalb der Organisation (Home Tenant) ▪ Zugriff beschränkt für Organisationsbenutzer ▪ Kein Zugriff auf Benutzerinformationen und Daten anderer Organisationen ▪ Beispiel: Firmeninterne App ▪ Vorteil: Einfache Verwaltung, da nur ein Mandant beteiligt ist
  10. ENTRA ID Enterprise application ▪ Service Principal ▪ Verwaltung einer

    App im Unternehmen ▪ Eigene Apps ▪ 3rd-party Apps ▪ Für Admins ▪ Management der Zugriffsberechtigungen ▪ Was die App im Tenant tun kann ▪ Wer auf die App zugreifen kann ▪ Auf welche Ressourcen die App zugreifen kann
  11. ENTRA ID Authentifizierung in .NET Applikation ▪ Benutzung von Templates

    ▪ Implementieren von Authentifizierung mittels Microsoft.Identity.Web
  12. API & SERVICE-TO-SERVICE CALLS Absichern von APIs ▪ Eigene App

    Registration zur Repräsentation einer API ▪ Konfiguration einer Resource-URI ▪ Standard: api://{App ID} ▪ Konfiguration von Scopes ▪ Berechtigungen für Clients (Applikationen) ▪ Consent-Konfiguration ▪ API-Scopes müssen durch Client (Applikation) angefordert werden
  13. API & SERVICE-TO-SERVICE CALLS Scopes Scopes beziehen sich auf die

    spezifischen Berechtigungen, die ein Client (Applikation) anfordert, um auf Ressourcen im Namen eines Benutzers zugreifen zu können. Ein Scope definiert den Bereich des Zugriffs und beschreibt, welche Aktionen auf einer bestimmten Ressource erlaubt sind. ▪ Scopes werden in der Regel in der OAuth-Autorisierungsanfrage angegeben ▪ Benutzer werden bei der Authentifizierung darüber informiert, welche Scopes (und somit Berechtigungen) die Anwendung anfordert ▪ Die Ressource, auf die zugegriffen werden soll, kann unterschiedliche Scopes für verschiedene Aktionen haben ▪ Die Anwendung darf nur innerhalb der vom Benutzer erlaubten Scopes operieren
  14. API & SERVICE-TO-SERVICE CALLS Downstream API Call Mit Downstream API

    Helper var response = await _downstreamApi.CallApiForUserAsync("MyAPI", options => { options.HttpMethod = "Get"; options.RelativePath = "/weatherforecast"; options.Scopes = "Weather.Read"; }); Ohne Downstream API Helper string authorizationHeader = await _authorizationHeaderProvider.CreateAuthorizationHeaderForUserAsync("Weather.Read"); _httpClient.DefaultRequestHeaders.Add("Authorization", authorizationHeader); var response = await _httpClient.GetAsync("/weatherforecast");
  15. AUTORISIERUNG Verschiedene Steuerungsmechanismen Groups Verwendung von Gruppenzuordnungen einer eingehenden Identität

    unter Verwendung einer Logik innerhalb der Anwendung AppRoles Verwendung der App Registration Funktion „App-Rollen“ in einer Anwendung unter Verwendung von Logik innerhalb der Anwendung zur Interpretation eingehender App- Rollenzuweisungen Custom Data Store Rollenzuweisungen mit Hilfe von Logik innerhalb der Anwendung abrufen und interpretieren
  16. AUTORISIERUNG Groups vs App Roles Microsoft Entra groups App Roles

    Programmiermodell Komplexer. Gruppen-IDs variieren zwischen Mandanten, und Überschreitungsansprüche müssen möglicherweise berücksichtigt werden. Gruppen sind nicht spezifisch für eine Anwendung, sondern für einen Microsoft Entra-Mandanten. Die einfachste Lösung. Sie sind für eine Anwendung spezifisch und werden in der Anwendungsregistrierung definiert. Rollenwerte sind zwischen Microsoft Entra- Tenants statisch Nein Ja Rollenwerte können in mehreren Anwendungen verwendet werden Ja Nein (Außer wenn die Rollenkonfiguration bei jeder Anwendungsregistrierung dupliziert wird). Informationen werden im Verzeichnis gespeichert Ja Ja Informationen werden per Token übermittelt Ja (groups claim) Ja (roles claim) Lebensdauer Ist im Verzeichnis enthalten. Bleibt selbst dann intakt, wenn die Anwendungsregistrierung entfernt wird. Ist in der Anwendungsregistrierung im Verzeichnis enthalten. Wird beim Entfernen der Anwendungsregistrierung entfernt. https://learn.microsoft.com/en-us/entra/identity-platform/custom-rbac-for-developers#choose-an-approach
  17. AUTORISIERUNG Konfiguration Groups ▪ Konfiguration über Token-Konfiguration in App Registration

    ▪ Mögliche Gruppentypen ▪ Security Groups ▪ Directory Roles ▪ Security Groupes, Directory Roles, Distribution List ▪ Enterpise App Assigned Groups ▪ Token-Claim ▪ group Claim enthält im Standard Gruppen IDs ▪ Verschiedene Identifier wie sAMAccountName, NetBIOSDomain\sAMAccountName für Active Directory gesyncte Gruppen ▪ Limit: 200 Gruppen
  18. AUTORISIERUNG Konfiguration App Roles ▪ Erstellen von App Roles in

    App Registration ▪ Zuweisung von Rollen in Enterprise Application ▪ Gruppenzuweisung ab Entra ID Plan P1 ▪ Token-Claim ▪ roles Claim ▪ Limit: 1.500 App Role Assignments pro Benutzer oder Gruppe
  19. WEITERE THEMEN Manifest limits ▪ Configure group claims and app

    roles in tokens ▪ Understanding the app manifest (Azure AD Graph format) Authorization Flows ▪ Microsoft identity platform and OAuth 2.0 authorization code flow ▪ OAuth 2.0 client credentials flow on the Microsoft identity platform ▪ Microsoft identity platform and OAuth2.0 On-Behalf-Of flow SAML ▪ SAML authentication with Microsoft Entra ID Entra External ID ▪ Microsoft Entra External ID overview
  20. CODE daniellindemann/entra-id-auth: Code of my talk "Passierschein, bitte - Sichere

    und skalierbare Authentifizierung mit Microsoft Entra ID" (github.com)
  21. Die abtis Gruppe führt als IT-Dienstleister den Mittelstand mit strategischer

    Beratung, effizienten Projekten und maßgeschneiderten Managed Services sicher in die digitale Zukunft. Die Gruppe verfügt über mehr als 20 Jahre Erfahrung in der Planung, der Umsetzung und dem Betrieb von Microsoft-Plattformen. Sie betreut bereits mehr als 250.000 Anwender der Cloud-Plattformen Microsoft 365 und Azure. Die abtis Gruppe ist Mitglied der Microsoft Intelligent Security Association (MISA), Fokuspartner von Microsoft für den Mittelstand und Gewinner des Microsoft Accelerate Innovation Awards 2023. Dabei deckt abtis alle Lösungsbereiche von Microsoft ab: von Modern Work über Security, Business Applications, Infrastructure (Azure), Digital & App Innovation (Azure) bis hin zu Data & AI (Azure). www.abtis.de +49 7231 4431 - 100 [email protected] © 2024 Alle Rechte vorbehalten. Dieses Dokument ist urheberrechtlich geschützt. Sämtliche Inhalte dienen der Dokumentation. Jede andere Nutzung, insbesondere die Weitergabe an Dritte, die Verbreitung oder die Bearbeitung, auch in Teilen, ist ohne schriftliche Einwilligung der abtis GmbH untersagt. Die verwendeten Firmen-, Marken- und Produktnamen und Warenzeichen sind eingetragene Markenzeichen oder Warenzeichen der jeweiligen Inhaber und werden hiermit anerkannt.