Bewährte Methoden und Empfehlungen für Microsoft Identity PlatformMicrosoft identity platform best practices and recommendations

Dieser Artikel enthält bewährte Methoden, Empfehlungen und häufige Fehler im Zusammenhang mit der Microsoft Identity Platform-Integration.This article highlights best practices, recommendations, and common oversights when integrating with the Microsoft identity platform. Die Prüfliste unterstützt Sie bei einer hochwertigen und sicheren Integration.This checklist will guide you to a high-quality and secure integration. Überprüfen Sie diese Liste in regelmäßigen Abständen, um die Qualität und Sicherheit der Identity Platform-Integration Ihrer App zu gewährleisten.Review this list on a regular basis to make sure you maintain the quality and security of your app’s integration with the identity platform. Die Checkliste ist nicht auf die Überprüfung der gesamten Anwendung ausgerichtet.The checklist isn't intended to review your entire application. Der Inhalt der Checkliste kann jederzeit geändert werden, während wir Verbesserungen an der Plattform vornehmen.The contents of the checklist are subject to change as we make improvements to the platform.

Machen Sie sich zum Einstieg anhand der Dokumentation zu Microsoft Identity Platform unter anderem mit Authentifizierungsgrundlagen und mit Anwendungsszenarien in Microsoft Identity Platform vertraut.If you’re just getting started, check out the Microsoft identity platform documentation to learn about authentication basics, application scenarios in the Microsoft identity platform, and more.

Stellen Sie anhand der folgenden Checkliste sicher, dass Ihre Anwendung effektiv in Microsoft Identity Platform integriert wird.Use the following checklist to ensure that your application is effectively integrated with the Microsoft identity platform.

Tipp

Der Integrationsassistent im Azure-Portal kann Ihnen dabei helfen, viele dieser bewährten Methoden und Empfehlungen anzuwenden.The Integration assistant in the Azure portal can help you apply many of these best practices and recommendations. Wählen Sie im Azure-Portal eine der App-Registrierungen und dann das Menüelement Integrations-Assistent aus, um mit dem Assistenten zu beginnen.Select any of your app registrations in the Azure portal, and then select the Integration assistant menu item to get started with the assistant.

GrundlagenBasics

Kontrollkästchen Beschäftigen Sie sich intensiv mit den Richtlinien für die Microsoft-Plattform.checkbox Read and understand the Microsoft Platform Policies. Stellen Sie sicher, dass Ihre Anwendung den dargelegten Bedingungen entspricht, weil diese für den Schutz der Benutzer und der Plattform entwickelt wurden.Ensure that your application adheres to the terms outlined as they're designed to protect users and the platform.

BesitzOwnership

Kontrollkästchen Stellen Sie sicher, dass die Informationen, die dem zur Registrierung und Verwaltung von Apps verwendeten Konto zugeordnet sind, auf dem neuesten Stand sind.Make sure the information associated with the account you used to register and manage apps is up-to-date.

BrandingBranding

Kontrollkästchen Richten Sie sich nach den Brandingrichtlinien für Anwendungen.checkbox Adhere to the Branding guidelines for applications.

Kontrollkästchen Geben Sie einen aussagekräftigen Namen und ein Logo für Ihre Anwendung ein.checkbox Provide a meaningful name and logo for your application. Diese Informationen werden in der Zustimmungsaufforderung Ihrer Anwendung angezeigt.This information appears on your application’s consent prompt. Stellen Sie sicher, dass Name und Logo für Ihr Unternehmen/Produkt repräsentativ sind, damit Benutzer fundierte Entscheidungen treffen können.Make sure your name and logo are representative of your company/product so that users can make informed decisions. Stellen Sie sicher, dass Sie keine Markenrechte verletzen.Ensure that you're not violating any trademarks.

DatenschutzPrivacy

Kontrollkästchen Geben Sie Links zu den Nutzungsbedingungen und Datenschutzbestimmungen Ihrer App an.Provide links to your app's terms of service and privacy statement.

SicherheitSecurity

Kontrollkästchen Verwalten Sie Ihre Umleitungs-URIs:checkbox Manage your redirect URIs:

  • Verwalten Sie den Besitz all Ihrer Umleitungs-URIs, und halten Sie die zugehörigen DNS-Einträge auf dem neuesten Stand.Maintain ownership of all your redirect URIs and keep the DNS records for them up-to-date.
  • Verwenden Sie keine Platzhalter (*) in Ihren URIs.Don't use wildcards (*) in your URIs.
  • Stellen Sie für Web-Apps sicher, dass alle URIs sicher und verschlüsselt sind (z.B. mithilfe von HTTPS-Schemas).For web apps, make sure all URIs are secure and encrypted (for example, using https schemes).
  • Verwenden Sie für öffentliche Clients ggf. plattformspezifische Umleitungs-URIs (vor allem für iOS und Android).For public clients, use platform-specific redirect URIs if applicable (mainly for iOS and Android). Verwenden Sie andernfalls Umleitungs-URIs mit hohem Zufallsfaktor, um Konflikte beim Rückruf an Ihre App zu vermeiden.Otherwise, use redirect URIs with a high amount of randomness to prevent collisions when calling back to your app.
  • Wenn Ihre App von einem isolierten Web-Agent aus verwendet wird, können Sie https://login.microsoftonline.com/common/oauth2/nativeclient verwenden.If your app is being used from an isolated web agent, you may use https://login.microsoftonline.com/common/oauth2/nativeclient.
  • Überprüfen und kürzen Sie in regelmäßigen Abständen alle nicht verwendeten oder nicht benötigten Umleitungs-URIs.Review and trim all unused or unnecessary redirect URIs on a regular basis.

Kontrollkästchen Wenn Ihre App in einem Verzeichnis registriert ist, minimieren Sie die Liste der Besitzer von App-Registrierungen, und überwachen Sie sie manuell.If your app is registered in a directory, minimize and manually monitor the list of app registration owners.

Kontrollkästchen Sie sollten die Unterstützung für den Flow zur impliziten OAuth2-Genehmigung nur dann aktivieren, wenn dies explizit erforderlich ist.checkbox Don't enable support for the OAuth2 implicit grant flow unless explicitly required. Informationen zu einem gültigen Szenario finden Sie hier.Learn about the valid scenario here.

Kontrollkästchen Lassen Sie die Kombination „Benutzername/Kennwort“ hinter sich.checkbox Move beyond username/password. Verwenden Sie keinen Flow für Ressourcenbesitzer-Kennwortanmeldeinformationen (ROPC), in dem die Kennwörter von Benutzern direkt verarbeitet werden.Don't use resource owner password credential flow (ROPC), which directly handles users’ passwords. Dieser Flow erfordert ein hohes Maß an Vertrauen und die Freigabe von Benutzeranmeldeinformationen. Er darf nur dann verwendet werden, wenn keine anderen, sichereren Flows genutzt werden können.This flow requires a high degree of trust and user exposure and should only be used when other, more secure, flows can't be used. Bei einigen Szenarien (z.B. DevOps) ist zu beachten, dass dieser Flow zwar weiterhin erforderlich ist, seine Verwendung jedoch Einschränkungen für Ihre Anwendung bedeutet.This flow is still needed in some scenarios (like DevOps), but beware that using it will impose constraints on your application. Weitere moderne Ansätze finden Sie unter Authentifizierungsflows und Anwendungsszenarien.For more modern approaches, read Authentication flows and application scenarios.

Kontrollkästchen Schützen und verwalten Sie Ihre vertraulichen App-Anmeldeinformationen für Web-Apps, Web-APIs und Daemon-Apps.checkbox Protect and manage your confidential app credentials for web apps, web APIs and daemon apps. Verwenden Sie Zertifikatanmeldeinformationen, keine Kennwortanmeldeinformationen (Clientgeheimnisse).Use certificate credentials, not password credentials (client secrets). Wenn Sie eine Kennwortanmeldeinformation verwenden müssen, legen Sie diese nicht manuell fest.If you must use a password credential, don't set it manually. Speichern Sie Anmeldeinformationen nicht im Code oder in der Konfiguration, und lassen Sie sie niemals von Personen bearbeiten.Don't store credentials in code or config, and never allow them to be handled by humans. Verwenden Sie möglichst verwaltete Identitäten für Azure-Ressourcen oder Azure Key Vault zum Speichern und regelmäßigen Rotieren Ihrer Anmeldeinformationen.If possible, use managed identities for Azure resources or Azure Key Vault to store and regularly rotate your credentials.

Kontrollkästchen Stellen Sie sicher, dass Ihre Anwendung den Ansatz der geringsten Rechte verfolgt.checkbox Make sure your application requests the least privilege permissions. Fordern Sie nur Berechtigungen an, die für Ihre Anwendung unbedingt erforderlich sind, und nur dann, wenn sie benötigt werden.Only ask for permissions that your application absolutely needs, and only when you need them. Informieren Sie sich über die verschiedenen Berechtigungstypen.Understand the different types of permissions. Anwendungsberechtigungen sollten nur bei Bedarf verwendet werden. Verwenden Sie nach Möglichkeit delegierte Berechtigungen.Only use application permissions if necessary; use delegated permissions where possible. Eine vollständige Liste der Microsoft Graph-Berechtigungen finden Sie in dieser Berechtigungsreferenz.For a full list of Microsoft Graph permissions, see this permissions reference.

Kontrollkästchen Wenn Sie eine API über Microsoft Identity Platform schützen, erwägen Sie sorgfältig, welche Berechtigungen darin verfügbar gemacht werden sollen.If you're securing an API using the Microsoft identity platform, carefully think through the permissions it should expose. Überlegen Sie sich die richtige Granularität für Ihre Lösung und entscheiden Sie, welche Berechtigungen die Einwilligung eines Administrators erfordern.Consider what's the right granularity for your solution and which permission(s) require admin consent. Prüfen Sie auf erwartete Berechtigungen in den eingehenden Token, bevor Sie Autorisierungsentscheidungen treffen.Check for expected permissions in the incoming tokens before making any authorization decisions.

ImplementierungImplementation

Kontrollkästchen Verwenden Sie moderne Authentifizierungslösungen (OAuth 2.0, OpenID Connect) zur sicheren Benutzeranmeldung.checkbox Use modern authentication solutions (OAuth 2.0, OpenID Connect) to securely sign in users.

Kontrollkästchen Programmieren Sie nicht direkt für Protokolle wie OAuth 2.0 und OpenID.checkbox Don't program directly against protocols such as OAuth 2.0 and Open ID. Nutzen Sie stattdessen die Microsoft-Authentifizierungsbibliothek (Microsoft Authentication Library, MSAL).Instead, leverage the Microsoft Authentication Library (MSAL). Die MSAL-Bibliotheken schließen Sicherheitsprotokolle sicher in eine benutzerfreundliche Bibliothek ein und bieten integrierte Unterstützung für Szenarien mit bedingtem Zugriff, geräteweites einmaliges Anmelden (Single Sign-On, SSO) sowie integrierte Unterstützung für die Tokenzwischenspeicherung.The MSAL libraries securely wrap security protocols in an easy-to-use library, and you get built-in support for Conditional Access scenarios, device-wide single sign-on (SSO), and built-in token caching support. Weitere Informationen finden Sie in der Liste mit den von Microsoft unterstützten Clientbibliotheken und Middlewarebibliotheken sowie in der Liste mit den kompatiblen Drittanbieter-Clientbibliotheken.For more info, see the list of Microsoft supported client libraries and middleware libraries and the list of compatible third-party client libraries.

Wenn Sie Code für die Authentifizierungsprotokolle schreiben müssen, verwenden Sie eine Methodik wie Microsoft SDL.If you must hand code for the authentication protocols, you should follow a methodology such as Microsoft SDL. Achten Sie auf die Sicherheitsüberlegungen in den Standardspezifikationen für jedes Protokoll.Pay close attention to the security considerations in the standards specifications for each protocol.

Kontrollkästchen Migrieren Sie bereits vorhandene Apps von der Azure Active Directory-Authentifizierungsbibliothek (ADAL) zur Microsoft Authentication Library (MSAL).checkbox Migrate existing apps from Azure Active Directory Authentication Library (ADAL) to the Microsoft Authentication Library. MSAL ist die neueste Identity Platform-Lösung von Microsoft und ADAL vorzuziehen.MSAL is Microsoft’s latest identity platform solution and is preferred to ADAL. Sie ist für .NET, JavaScript, Android, iOS und macOS verfügbar und befindet sich für Python und Java momentan in der öffentlichen Vorschau.It is available on .NET, JavaScript, Android, iOS, macOS and is also in public preview for Python and Java. Ausführlichere Informationen zur App-Migration finden Sie in den Artikeln für ADAL.NET, ADAL.js und ADAL.NET/iOS-Broker.Read more about migrating ADAL.NET, ADAL.js, and ADAL.NET and iOS broker apps.

Kontrollkästchen Konfigurieren Sie für mobile Apps jede Plattform unter Verwendung der Anwendungsregistrierung.For mobile apps, configure each platform using the application registration experience. Für Ihre App muss ein Broker-Umleitungs-URI konfiguriert werden, damit sie Microsoft Authenticator oder das Microsoft-Unternehmensportal für einmaliges Anmelden nutzen kann.In order for your application to take advantage of the Microsoft Authenticator or Microsoft Company Portal for single sign-in, your app needs a “broker redirect URI” configured. Dadurch kann Microsoft nach der Authentifizierung die Kontrolle an Ihre Anwendung zurückgeben.This allows Microsoft to return control to your application after authentication. Beim Konfigurieren der einzelnen Plattformen führt Sie die App-Registrierung durch den Prozess.When configuring each platform, the app registration experience will guide you through the process. Verwenden Sie die Schnellstartanleitung, um ein Beispiel herunterzuladen.Use the quickstart to download a working example. Verwenden Sie unter iOS nach Möglichkeit Broker und System WebView.On iOS, use brokers and system webview whenever possible.

Kontrollkästchen Halten Sie in Web-Apps oder Web-APIs jeweils einen Tokencache pro Konto bereit.checkbox In web apps or web APIs, keep one token cache per account. Bei Web-Apps sollte der Tokencache durch die Konto-ID mit einem Schlüssel versehen werden.For web apps, the token cache should be keyed by the account ID. Bei Web-APIs sollte das Konto durch den Hash des Tokens, das zum Aufrufen der API verwendet wird, mit einem Schlüssel versehen werden.For web APIs, the account should be keyed by the hash of the token used to call the API. MSAL.NET bietet eine benutzerdefinierte Tokencache-Serialisierung auf der .NET Framework- und der .NET Core-Unterplattform.MSAL.NET provides custom token cache serialization in the .NET Framework and .NET Core subplatforms. Aus Sicherheits- und Leistungsgründen wird empfohlen, jeweils einen Cache pro Benutzer zu serialisieren.For security and performance reasons, our recommendation is to serialize one cache per user. Weitere Informationen finden Sie unter Tokencache für eine Web-App (vertrauliche Clientanwendung).For more information, read about token cache serialization.

Kontrollkästchen Wenn die von Ihrer App benötigten Daten über Microsoft Graph verfügbar sind, fordern Sie Berechtigungen für diese Daten über den Microsoft Graph-Endpunkt statt über die einzelne API an.checkbox If the data your app requires is available through Microsoft Graph, request permissions for this data using the Microsoft Graph endpoint rather than the individual API.

Kontrollkästchen Betrachten Sie nicht den Wert des Zugriffstoken, und versuchen Sie nicht, ihn als Client zu analysieren.Don't look at the access token value, or attempt to parse it as a client. Werte und Formate können ohne Vorwarnung geändert oder sogar verschlüsselt werden. Verwenden Sie daher immer den id_token-Wert, wenn der Client Informationen zum Benutzer erhalten soll, oder rufen Sie Microsoft Graph auf.They can change values, formats, or even become encrypted without warning - always use the id_token if your client needs to learn something about the user, or call Microsoft Graph. Nur Web-APIs sollten Zugriffstoken analysieren (da über sie das Format definiert wird und die Verschlüsselungsschlüssel festgelegt werden).Only web APIs should parse access tokens (since they are the ones defining the format and setting the encryption keys).

EndbenutzererfahrungEnd-user experience

Kontrollkästchen Machen Sie sich mit der Genehmigungsoberfläche vertraut, und konfigurieren Sie die Bestandteile der App-Genehmigungsaufforderung so, dass Endbenutzer und Administratoren genügend Informationen erhalten, um über die Vertrauenswürdigkeit Ihrer App zu entscheiden.checkbox Understand the consent experience and configure the pieces of your app’s consent prompt so that end users and admins have enough information to determine if they trust your app.

Kontrollkästchen Minimieren Sie, wie häufig ein Benutzer bei Verwendung Ihrer App Anmeldeinformationen eingeben muss, indem vor interaktiven Flows versucht wird, die automatische Authentifizierung (automatischer Tokenabruf) durchzuführen.Minimize the number of times a user needs to enter login credentials while using your app by attempting silent authentication (silent token acquisition) before interactive flows.

Kontrollkästchen Verwenden Sie nicht „prompt=consent“ für jede Anmeldung.Don't use “prompt=consent” for every sign-in. Verwenden Sie „prompt=consent“ nur dann, wenn Sie festgestellt haben, dass für die zusätzlichen Berechtigungen eine Einwilligung erforderlich ist (z.B., wenn Sie erforderliche Berechtigungen Ihrer App geändert haben).Only use prompt=consent if you’ve determined that you need to ask for consent for additional permissions (for example, if you’ve changed your app’s required permissions).

Kontrollkästchen Reichern Sie Ihre Anwendung ggf. mit Benutzerdaten an.checkbox Where applicable, enrich your application with user data. Eine einfache Möglichkeit dazu besteht in der Verwendung der Microsoft Graph-API.Using the Microsoft Graph API is an easy way to do this. Das Tool Graph-Explorer kann Sie bei den ersten Schritten unterstützen.The Graph Explorer tool that can help you get started.

Kontrollkästchen Registrieren Sie den vollständigen Satz an Berechtigungen, die für Ihre App erforderlich sind, damit Administratoren die Genehmigung für ihren Mandanten problemlos erteilen können.checkbox Register the full set of permissions that your app requires so admins can grant consent easily to their tenant. Verwenden Sie die inkrementelle Einwilligung zur Laufzeit. So können Benutzer nachvollziehen, warum Ihre App Berechtigungen anfordert, die Besorgnis oder Verwirrung hervorrufen können, wenn sie gleich beim ersten Start angefordert werden.Use incremental consent at run time to help users understand why your app is requesting permissions that may concern or confuse users when requested on first start.

Kontrollkästchen Implementieren Sie eine bereinigte Umgebung für einmaliges Abmelden.checkbox Implement a clean single sign-out experience. Dies ist eine Datenschutz- und Sicherheitsanforderung, die eine gute Benutzeroberfläche ausmacht.It’s a privacy and a security requirement, and makes for a good user experience.

TestenTesting

Kontrollkästchen Testen Sie auf Richtlinien für bedingten Zugriff, die die Verwendung Ihrer Anwendung beeinträchtigen können.checkbox Test for Conditional Access policies that may affect your users’ ability to use your application.

Kontrollkästchen Testen Sie Ihre Anwendung mit allen möglichen Konten, die Sie unterstützen möchten (z.B. Geschäfts-, Schul- oder Unikonten, persönliche Microsoft-Konten, Kinderkonten und unabhängige Konten).Test your application with all possible accounts that you plan to support (for example, work or school accounts, personal Microsoft accounts, child accounts, and sovereign accounts).

Zusätzliche RessourcenAdditional resources

Hier erhalten Sie detaillierte Informationen zu v2.0:Explore in-depth information about v2.0: