Slide 1

Slide 1 text

PASSIERSCHEIN, BITTE Sichere und skalierbare Authentifizierung mit Microsoft Entra ID

Slide 2

Slide 2 text

AGENDA ▪ Identity Provider ▪ Entra ID und Microsoft Identity Platform ▪ API & Service-To-Service Calls ▪ Autorisierung

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

IDENTITY PROVIDER

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

IDENTITY PROVIDER Login mit Identity Provider Identity Provider ID Token + Access Token + (Refresh Token)

Slide 9

Slide 9 text

IDENTITY PROVIDER Authentication Protocol

Slide 10

Slide 10 text

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 …

Slide 11

Slide 11 text

IDENTITY PROVIDER Anbieter und Lösungen Entra ID Auth0 Keycloak Authentik Authelia

Slide 12

Slide 12 text

ENTRA ID UND MICROSOFT IDENTITY PLATFORM

Slide 13

Slide 13 text

ENTRA ID Microsoft Identity Platform https://learn.microsoft.com/en-us/entra/identity-platform/v2-overview

Slide 14

Slide 14 text

ENTRA ID App Beispiel: Website & API Entra ID als Identity Provider Razor Pages Web API

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

ENTRA ID Authentifizierung in .NET Applikation ▪ Benutzung von Templates ▪ Implementieren von Authentifizierung mittels Microsoft.Identity.Web

Slide 19

Slide 19 text

DEMO App erstellen

Slide 20

Slide 20 text

API & SERVICE-TO-SERVICE CALLS

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

API & SERVICE-TO-SERVICE CALLS Scopes-Konfiguration

Slide 24

Slide 24 text

API & SERVICE-TO-SERVICE CALLS Zugriff auf API mit .NET https://learn.microsoft.com/en-us/entra/identity-platform/scenario-web-app-call-api-app-configuration

Slide 25

Slide 25 text

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");

Slide 26

Slide 26 text

DEMO Frontend Zugriff auf API

Slide 27

Slide 27 text

AUTORISIERUNG

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

DEMO Absicherung durch Benutzerberechtigungen

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

FRAGEN?

Slide 35

Slide 35 text

CODE daniellindemann/entra-id-auth: Code of my talk "Passierschein, bitte - Sichere und skalierbare Authentifizierung mit Microsoft Entra ID" (github.com)

Slide 36

Slide 36 text

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.