Mit Microsoft und C++ authentifizieren
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Sie können Ihre Nutzer über OAuth-Anbieter wie Microsoft Azure Active Directory mit Firebase authentifizieren. Dazu müssen Sie die webbasierte generische OAuth-Anmeldung mit dem Firebase SDK in Ihre App einbinden, um den End-to-End-Anmeldevorgang durchzuführen.
Da für diesen Ablauf die telefonbasierten Firebase SDKs verwendet werden müssen,
die auf Android- und Apple-Plattformen unterstützt werden.
Hinweis
- Fügen Sie Ihrem C++-Projekt Firebase hinzu.
- Öffnen Sie in der Firebase Console den Bereich Auth.
- Aktivieren Sie auf dem Tab Anmeldemethode den Anbieter Microsoft.
- Fügen Sie die Client-ID und das Client-Secret aus der Entwicklerkonsole des Anbieters zur Anbieterkonfiguration hinzu:
- Folgen Sie der Anleitung unter
Kurzanleitung: Anwendung mit dem Azure Active Directory v2.0-Endpunkt registrieren, um einen Microsoft OAuth-Client zu registrieren.
Dieser Endpunkt unterstützt die Anmeldung mit privaten Microsoft-Konten sowie Azure Active Directory-Konten.
Weitere Informationen zu Azure Active Directory v2.0
- Achten Sie bei der Registrierung von Apps bei diesen Anbietern darauf, die
*.firebaseapp.com
-Domain für Ihr Projekt als Weiterleitungsdomain für Ihr
- Klicken Sie auf Speichern.
Auf die Klasse firebase::auth::Auth
zugreifen
Die Klasse
Auth
ist das Gateway für alle API-Aufrufe.
- Fügen Sie die Auth- und App-Headerdateien hinzu:
#include "firebase/app.h"
#include "firebase/auth.h"
- Erstellen Sie in Ihrem Initialisierungscode einen
Klasse
firebase::App
.
#if defined(__ANDROID__)
firebase::App* app =
firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
#else
firebase::App* app = firebase::App::Create(firebase::AppOptions());
#endif // defined(__ANDROID__)
- Erwerben Sie die Klasse „
firebase::auth::Auth
“ für Ihr Gerät „firebase::App
“.
Es gibt eine Eins-zu-Eins-Zuordnung zwischen App
und Auth
.
firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
Anmeldevorgang mit dem Firebase SDK durchführen
So verwalten Sie den Anmeldevorgang mit dem Firebase SDK:
Instanz einer FederatedOAuthProviderData
erstellen, die konfiguriert wurde mit
die für Microsoft entsprechende Anbieter-ID.
firebase::auth::FederatedOAuthProviderData
provider_data(firebase::auth::MicrosoftAuthProvider::kProviderId);
Optional: Geben Sie zusätzliche benutzerdefinierte OAuth-Parameter an, die Sie
mit der OAuth-Anfrage senden.
// Prompt user to re-authenticate to Microsoft.
provider_data.custom_parameters["prompt"] = "login";
// Target specific email with login hint.
provider_data.custom_parameters["login_hint"] =
"user@firstadd.onmicrosoft.com";
Informationen zu den von Microsoft unterstützten Parametern finden Sie in der
Microsoft OAuth-Dokumentation
Hinweis: Sie können keine für Firebase erforderlichen Parameter mit setCustomParameters()
übergeben. Diese Parameter sind client_id, response_type, redirect_uri, state, scope und response_mode.
So erlauben Sie nur Nutzern aus einem bestimmten Azure AD-Mandanten, sich anzumelden
in die Anwendung einbinden, entweder den Anzeigenamen des Azure AD-Mandanten
oder die GUID-Kennung des Mandanten verwendet werden. Geben Sie dazu das Feld „tenant“ im Objekt „custom_parameters“ an.
// Optional "tenant" parameter in case you are using an Azure AD tenant.
// eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com'
// or "common" for tenant-independent tokens.
// The default value is "common".
provider_data.custom_parameters["tenant"] ="TENANT_ID";
Optional: Geben Sie zusätzliche OAuth 2.0-Bereiche an, die Sie zusätzlich zum grundlegenden Profil vom Authentifizierungsanbieter anfordern möchten.
provider_data.scopes.push_back("mail.read");
provider_data.scopes.push_back("calendars.read");
Weitere Informationen finden Sie in der Dokumentation zu Berechtigungen und Einwilligungen von Microsoft.
Nachdem Sie Ihre Anbieterdaten konfiguriert haben, können Sie damit eine
FederatedOAuthProvider
// Construct a FederatedOAuthProvider for use in Auth methods.
firebase::auth::FederatedOAuthProvider provider(provider_data);
Authentifizieren Sie sich bei Firebase mithilfe des Auth-Anbieterobjekts. Im Gegensatz zu
anderen FirebaseAuth-Vorgängen hinzugefügt wurde, wird die Benutzeroberfläche gesteuert,
Webansicht öffnen, in der der Nutzer seine Anmeldedaten eingeben kann.
Rufen Sie SignInWithProvider
auf, um den Anmeldevorgang zu starten:
firebase::Future<firebase::auth::AuthResult> result =
auth->SignInWithProvider(provider_data);
Ihre Anwendung kann dann warten oder einen Rückruf für die Future-Funktion registrieren.
Mit dem OAuth-Zugriffstoken können Sie die Methode
Microsoft Graph API
Im Gegensatz zu anderen Anbietern, die von Firebase Auth unterstützt werden,
eine Foto-URL angeben. Stattdessen müssen die Binärdaten für ein Profilfoto
angefordert über
Microsoft Graph API
Die obigen Beispiele konzentrieren sich zwar auf Anmeldeabläufe, Sie haben aber auch die Möglichkeit,
Möglichkeit zum Verknüpfen eines Microsoft Azure Active Directory-Anbieters mit einem vorhandenen
Nutzer mit LinkWithProvider
. Sie können beispielsweise mehrere
demselben Nutzer zu, damit sie sich mit beiden anmelden können.
firebase::Future<firebase::auth::AuthResult> result = user.LinkWithProvider(provider_data);
Dasselbe Muster kann mit ReauthenticateWithProvider
verwendet werden, wobei
werden zum Abrufen neuer Anmeldedaten für vertrauliche Vorgänge verwendet, die
Letzte Anmeldung
firebase::Future<firebase::auth::AuthResult> result =
user.ReauthenticateWithProvider(provider_data);
Ihre Anwendung wartet dann entweder oder registriert einen Rückruf auf
in die Zukunft.
Erweitert: Anmeldevorgang manuell ausführen
Anders als bei anderen von Firebase unterstützten OAuth-Anbietern wie Google, Facebook und Twitter, bei denen die Anmeldung direkt mit OAuth-Zugriffstoken-basierten Anmeldedaten erfolgen kann, unterstützt Firebase Auth diese Funktion nicht für Anbieter wie Microsoft, da der Firebase Auth-Server die Zielgruppe von Microsoft OAuth-Zugriffstokens nicht überprüfen kann.
Dies ist eine wichtige Sicherheitsanforderung. Andernfalls könnten Anwendungen und Websites von Replay-Angriffen betroffen sein, bei denen ein für ein Projekt (Angreifer) abgerufenes Microsoft OAuth-Zugriffstoken verwendet wird, um sich in einem anderen Projekt (Opfer) anzumelden.
Stattdessen bietet Firebase Auth
die Möglichkeit, den gesamten OAuth-Ablauf
Autorisierungscode-Austausch mit OAuth-Client-ID und -Secret
die in der Firebase Console konfiguriert wurden. Da der Autorisierungscode nur in Verbindung mit einer bestimmten Client-ID/einem bestimmten Secret verwendet werden kann, kann ein Autorisierungscode, der für ein Projekt abgerufen wurde, nicht für ein anderes verwendet werden.
Wenn diese Anbieter in nicht unterstützten Umgebungen verwendet werden müssen, müssen eine OAuth-Bibliothek eines Drittanbieters und die benutzerdefinierte Firebase-Authentifizierung verwendet werden. Ersteres ist erforderlich, um sich beim Anbieter zu authentifizieren, und letzteres, um die Anmeldedaten des Anbieters gegen ein benutzerdefiniertes Token auszutauschen.
Nächste Schritte
Nachdem sich ein Nutzer zum ersten Mal angemeldet hat, wird ein neues Nutzerkonto erstellt und
die mit den Anmeldedaten verknüpft sind, d. h. Nutzername und Passwort,
oder Authentifizierungsanbieter-Informationen – also für den Nutzer, mit dem sich der Nutzer angemeldet hat. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Nutzer in allen Apps in Ihrem Projekt zu identifizieren, unabhängig davon, wie er sich anmeldet.
-
In Ihren Apps können Sie die grundlegenden Profilinformationen des Nutzers über das Objekt firebase::auth::User
abrufen:
firebase::auth::User user = auth->current_user();
if (user.is_valid()) {
std::string name = user.display_name();
std::string email = user.email();
std::string photo_url = user.photo_url();
// The user's ID, unique to the Firebase project.
// Do NOT use this value to authenticate with your backend server,
// if you have one. Use firebase::auth::User::Token() instead.
std::string uid = user.uid();
}
In Ihren Firebase Realtime Database- und Cloud Storage-Sicherheitsregeln können Sie die eindeutige Nutzer-ID des angemeldeten Nutzers aus der Variablen auth
abrufen und damit steuern, auf welche Daten ein Nutzer zugreifen kann.
Sie können Nutzern erlauben, sich mit Mehrfachauthentifizierung in Ihrer App anzumelden
indem Sie die Anmeldedaten des Authentifizierungsanbieters mit einem
eines bestehenden Nutzerkontos.
Rufen Sie auf, um einen Nutzer abzumelden.
SignOut()
:
auth->SignOut();
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2025-08-16 (UTC).
[null,null,["Zuletzt aktualisiert: 2025-08-16 (UTC)."],[],[],null,["You can let your users authenticate with Firebase using OAuth providers like\nMicrosoft Azure Active Directory by integrating web-based generic OAuth Login\ninto your app using the Firebase SDK to carry out the end to end sign-in flow.\nSince this flow requires the use of the phone-based Firebase SDKs, it is only\nsupported on Android and Apple platforms.\n\nBefore you begin\n\n1. [Add Firebase to your C++ project](/docs/cpp/setup#note_select_platform).\n2. In the [Firebase console](//console.firebase.google.com/), open the **Auth** section.\n3. On the **Sign in method** tab, enable the **Microsoft** provider.\n4. Add the **Client ID** and **Client Secret** from that provider's developer console to the provider configuration:\n 1. To register a Microsoft OAuth client, follow the instructions in [Quickstart: Register an app with the Azure Active Directory v2.0 endpoint](https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-register-an-app). Note that this endpoint supports sign-in using Microsoft personal accounts as well as Azure Active Directory accounts. [Learn more](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-overview) about Azure Active Directory v2.0.\n 2. When registering apps with these providers, be sure to register the `*.firebaseapp.com` domain for your project as the redirect domain for your app.\n5. Click **Save**.\n\nAccess the `firebase::auth::Auth` class The `Auth` class is the gateway for all API calls.\n\n1. Add the Auth and App header files: \n\n ```c++\n #include \"firebase/app.h\"\n #include \"firebase/auth.h\"\n ```\n2. In your initialization code, create a [`firebase::App`](/docs/reference/cpp/class/firebase/app) class. \n\n ```c++\n #if defined(__ANDROID__)\n firebase::App* app =\n firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);\n #else\n firebase::App* app = firebase::App::Create(firebase::AppOptions());\n #endif // defined(__ANDROID__)\n ```\n3. Acquire the `firebase::auth::Auth` class for your `firebase::App`. There is a one-to-one mapping between `App` and `Auth`. \n\n ```c++\n firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);\n ```\n\nHandle the sign-in flow with the Firebase SDK\n\nTo handle the sign-in flow with the Firebase SDK, follow these steps:\n\n1. Construct an instance of a `FederatedOAuthProviderData` configured with\n the provider id appropriate for Microsoft.\n\n firebase::auth::FederatedOAuthProviderData\n provider_data(firebase::auth::MicrosoftAuthProvider::kProviderId);\n\n2. **Optional**: Specify additional custom OAuth parameters that you want to\n send with the OAuth request.\n\n // Prompt user to re-authenticate to Microsoft.\n provider_data.custom_parameters[\"prompt\"] = \"login\";\n\n // Target specific email with login hint.\n provider_data.custom_parameters[\"login_hint\"] =\n \"user@firstadd.onmicrosoft.com\";\n\n For the parameters Microsoft supports, see the\n [Microsoft OAuth documentation](https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-oauth-code).\n Note that you can't pass Firebase-required parameters with\n `setCustomParameters()`. These parameters are **client_id** ,\n **response_type** , **redirect_uri** , **state** , **scope** and\n **response_mode**.\n\n To allow only users from a particular Azure AD tenant to sign\n into the application, either the friendly domain name of the Azure AD tenant\n or the tenant's GUID identifier can be used. This can be done by specifying\n the \"tenant\" field in the custom parameters object. \n\n // Optional \"tenant\" parameter in case you are using an Azure AD tenant.\n // eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com'\n // or \"common\" for tenant-independent tokens.\n // The default value is \"common\".\n provider_data.custom_parameters[\"tenant\"] =\"TENANT_ID\";\n\n3. **Optional**: Specify additional OAuth 2.0 scopes beyond basic profile that\n you want to request from the authentication provider.\n\n provider_data.scopes.push_back(\"mail.read\");\n provider_data.scopes.push_back(\"calendars.read\");\n\n To learn more, refer to the\n [Microsoft permissions and consent documentation](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent).\n4. Once your provider data has been configured, use it to create a\n `FederatedOAuthProvider`.\n\n // Construct a FederatedOAuthProvider for use in Auth methods.\n firebase::auth::FederatedOAuthProvider provider(provider_data);\n\n5. Authenticate with Firebase using the Auth provider object. Note that unlike\n other FirebaseAuth operations, this will take control of your UI by popping\n up a web view in which the user can enter their credentials.\n\n To start the sign in flow, call `SignInWithProvider`: \n\n firebase::Future\u003cfirebase::auth::AuthResult\u003e result =\n auth-\u003eSignInWithProvider(provider_data);\n\n Your application may then wait or [register a callback on the Future](#register_callback_on_future).\n\n Using the OAuth access token, you can call the\n [Microsoft Graph API](https://docs.microsoft.com/en-us/graph/overview?toc=./toc.json&view=graph-rest-1.0).\n\n Unlike other providers supported by Firebase Auth, Microsoft does not\n provide a photo URL and instead, the binary data for a profile photo has to\n be requested via\n [Microsoft Graph API](https://docs.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0).\n6. While the above examples focus on sign-in flows, you also have the\n ability to link a Microsoft Azure Active Directory provider to an existing\n user using `LinkWithProvider`. For example, you can link multiple\n providers to the same user allowing them to sign in with either.\n\n firebase::Future\u003cfirebase::auth::AuthResult\u003e result = user.LinkWithProvider(provider_data);\n\n7. The same pattern can be used with `ReauthenticateWithProvider` which can be\n used to retrieve fresh credentials for sensitive operations that require\n recent login.\n\n firebase::Future\u003cfirebase::auth::AuthResult\u003e result =\n user.ReauthenticateWithProvider(provider_data);\n\n Your application may then wait or [register a callback on\n the Future](#register_callback_on_future).\n\nAdvanced: Handle the sign-in flow manually\n\nUnlike other OAuth providers supported by Firebase such as Google, Facebook,\nand Twitter, where sign-in can directly be achieved with OAuth access token\nbased credentials, Firebase Auth does not support the same capability for\nproviders such as Microsoft due to the inability of the Firebase\nAuth server to verify the audience of Microsoft OAuth access tokens.\nThis is a critical security requirement and could expose applications and\nwebsites to replay attacks where a Microsoft OAuth access token obtained for\none project (attacker) can be used to sign in to another project (victim).\nInstead, Firebase Auth offers the ability to handle the entire OAuth flow and\nthe authorization code exchange using the OAuth client ID and secret\nconfigured in the Firebase Console. As the authorization code can only be used\nin conjunction with a specific client ID/secret, an authorization code\nobtained for one project cannot be used with another.\n\nIf these providers are required to be used in unsupported environments, a\nthird party OAuth library and\n[Firebase custom authentication](../admin/create-custom-tokens)\nwould need to be used. The former is needed to authenticate with the provider\nand the latter to exchange the provider's credential for a custom token.\n\nNext steps\n\nAfter a user signs in for the first time, a new user account is created and\nlinked to the credentials---that is, the user name and password, phone\nnumber, or auth provider information---the user signed in with. This new\naccount is stored as part of your Firebase project, and can be used to identify\na user across every app in your project, regardless of how the user signs in.\n\n- In your apps, you can get the user's basic profile information from the\n [`firebase::auth::User`](/docs/reference/cpp/class/firebase/auth/user) object:\n\n ```c++\n firebase::auth::User user = auth-\u003ecurrent_user();\n if (user.is_valid()) {\n std::string name = user.display_name();\n std::string email = user.email();\n std::string photo_url = user.photo_url();\n // The user's ID, unique to the Firebase project.\n // Do NOT use this value to authenticate with your backend server,\n // if you have one. Use firebase::auth::User::Token() instead.\n std::string uid = user.uid();\n }\n ```\n- In your Firebase Realtime Database and Cloud Storage\n [Security Rules](/docs/database/security/user-security), you can\n get the signed-in user's unique user ID from the `auth` variable,\n and use it to control what data a user can access.\n\nYou can allow users to sign in to your app using multiple authentication\nproviders by [linking auth provider credentials to an\nexisting user account.](/docs/auth/cpp/account-linking)\n\nTo sign out a user, call [`SignOut()`](/docs/reference/cpp/class/firebase/auth/auth#signout): \n\n```c++\nauth-\u003eSignOut();\n```"]]