Verwalten der Authentifizierungsmethoden von Benutzern mithilfe von Microsoft Graph
Artikel
Authentifizierungsmethoden sind die Methoden, mit denen Sich Benutzer in Microsoft Entra ID authentifizieren. Die folgenden Authentifizierungsmethoden sind derzeit in Microsoft Entra ID verfügbar und können über Microsoft Graph verwaltet werden:
Authentifizierungsmethoden werden bei der primären, Zwei-Faktor- und Step-Up-Authentifizierung sowie beim SSPR-Verfahren (Self-Service-Kennwortzurücksetzung) verwendet.
Was können Sie mit den APIs für Authentifizierungsmethoden tun?
Sie können die Authentifizierungsmethoden-APIs verwenden, um sie in Ihre Apps zum Verwalten der Authentifizierungsmethoden eines Benutzers zu integrieren. Beispielsweise können Sie folgende Aktionen ausführen:
Hinzufügen einer Telefonnummer für einen Benutzer, der diese Nummer dann für SMS und Sprachanruf-Authentifizierung verwenden kann, wenn er durch die Richtlinie dazu berechtigt ist
Aktualisieren oder Löschen der Telefonnummer, die einem Benutzer zugewiesen ist
Aktivieren oder Deaktivieren der Telefonnummer für die SMS-Anmeldung
Zurücksetzen eines Benutzerkennworts
Wichtig
Es wird nicht empfohlen, die APIs für Authentifizierungsmethoden für Szenarien zu verwenden, in denen Sie Ihre gesamte Benutzerpopulation zu Überwachungs- oder Sicherheitsüberprüfungszwecken durchlaufen müssen. Für diese Arten von Szenarien empfehlen wir die Verwendung der APIs für die Authentifizierungsmethoderegistrierung und nutzungsberichte (einige APIs sind nur auf dem beta Endpunkt verfügbar).
Verwenden von Richtlinien zum Verwalten von Authentifizierungsmethoden in Ihrem Mandanten
Sie können auswählen, welche Authentifizierungsmethoden für Benutzer in Ihrem Mandanten zulässig sind, indem Sie Authentifizierungsmethodenrichtlinien konfigurieren. Für jede Richtlinie konfigurieren Sie, ob die Authentifizierungsmethode aktiviert ist, ihre Einstellungen und können explizit die Gruppen von Benutzern definieren, die die Methode verwenden dürfen oder nicht.
Beispielszenario
In diesem Artikel erfahren Sie folgendes:
Authentifizieren bei Microsoft Entra ID mit den richtigen Rollen und Berechtigungen
Überprüfen der Authentifizierungsmethoden des Benutzers
Hinzufügen neuer Telefonnummern für den Benutzer
Entfernen einer Telefonnummer vom Benutzer
Zurücksetzen des Benutzerkennworts
Schritt 1: Authentifizieren bei Microsoft Entra ID mit den richtigen Rollen und Berechtigungen
Melden Sie sich bei einem API-Client wie Graph-Explorer mit einem Konto an, das mindestens über die Microsoft Entra-Rolle"Privilegierter Authentifizierungsadministrator" oder "Authentifizierungsadministrator" verfügt. Sie können einen Testmandanten mit Beispieldaten verwenden, um die APIs auszuprobieren.
Erteilen Sie der App als Nächstes die Berechtigung UserAuthenticationMethod.ReadWrite.All . Sie benötigen diese Berechtigung, um in diesem Szenario sowohl Lese- als auch Schreibvorgänge auszuführen.
Sie können jetzt mit der Verwendung der APIs beginnen. In diesem Szenario verwenden Sie die APIs, um die Authentifizierungsmethoden von Cameron White zu verwalten.
Schritt 2: Überprüfen der Authentifizierungsmethoden des Benutzers
GET https://graph.microsoft.com/v1.0/users/CameronW@Contoso.com/authentication/methods
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users["{user-id}"].Authentication.Methods.GetAsync();
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
//other-imports
)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
methods, err := graphClient.Users().ByUserId("user-id").Authentication().Methods().Get(context.Background(), nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
AuthenticationMethodCollectionResponse result = graphClient.users().byUserId("{user-id}").authentication().methods().get();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
result = await graph_client.users.by_user_id('user-id').authentication.methods.get()
In dieser Antwort hat Cameron nur die Kennwortauthentifizierungsmethode aktiviert.
28c10230-6103-485e-b985-444c60001490 ist die global eindeutige ID der Kennwortauthentifizierungsmethode für microsoft Entra ID.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('CameronW%40contoso.com')/authentication/methods",
"@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET users('<key>')/authentication/methods?$select=id",
"value": [
{
"@odata.type": "#microsoft.graph.passwordAuthenticationMethod",
"id": "28c10230-6103-485e-b985-444c60001490",
"password": null,
"createdDateTime": "2023-09-18T10:38:07Z"
}
]
}
Schritt 3: Hinzufügen neuer Telefonnummern für den Benutzer
In diesem Schritt fügen Sie eine neue Mobiltelefonnummer hinzu, die Cameron verwenden kann.
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new PhoneAuthenticationMethod
{
PhoneNumber = "+1 2065555555",
PhoneType = AuthenticationPhoneType.Mobile,
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users["{user-id}"].Authentication.PhoneMethods.PostAsync(requestBody);
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewPhoneAuthenticationMethod()
phoneNumber := "+1 2065555555"
requestBody.SetPhoneNumber(&phoneNumber)
phoneType := graphmodels.MOBILE_AUTHENTICATIONPHONETYPE
requestBody.SetPhoneType(&phoneType)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
phoneMethods, err := graphClient.Users().ByUserId("user-id").Authentication().PhoneMethods().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
PhoneAuthenticationMethod phoneAuthenticationMethod = new PhoneAuthenticationMethod();
phoneAuthenticationMethod.setPhoneNumber("+1 2065555555");
phoneAuthenticationMethod.setPhoneType(AuthenticationPhoneType.Mobile);
PhoneAuthenticationMethod result = graphClient.users().byUserId("{user-id}").authentication().phoneMethods().post(phoneAuthenticationMethod);
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Models\PhoneAuthenticationMethod;
use Microsoft\Graph\Generated\Models\AuthenticationPhoneType;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new PhoneAuthenticationMethod();
$requestBody->setPhoneNumber('+1 2065555555');
$requestBody->setPhoneType(new AuthenticationPhoneType('mobile'));
$result = $graphServiceClient->users()->byUserId('user-id')->authentication()->phoneMethods()->post($requestBody)->wait();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.models.phone_authentication_method import PhoneAuthenticationMethod
from msgraph.generated.models.authentication_phone_type import AuthenticationPhoneType
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = PhoneAuthenticationMethod(
phone_number = "+1 2065555555",
phone_type = AuthenticationPhoneType.Mobile,
)
result = await graph_client.users.by_user_id('user-id').authentication.phone_methods.post(request_body)
GET https://graph.microsoft.com/v1.0/users/CameronW@Contoso.com/authentication/methods
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users["{user-id}"].Authentication.Methods.GetAsync();
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
//other-imports
)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
methods, err := graphClient.Users().ByUserId("user-id").Authentication().Methods().Get(context.Background(), nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
AuthenticationMethodCollectionResponse result = graphClient.users().byUserId("{user-id}").authentication().methods().get();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
result = await graph_client.users.by_user_id('user-id').authentication.methods.get()
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('CameronW%40contoso.com')/authentication/methods",
"@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET users('<key>')/authentication/methods?$select=id",
"value": [
{
"@odata.type": "#microsoft.graph.phoneAuthenticationMethod",
"id": "e37fc753-ff3b-4958-9484-eaa9425c82bc",
"phoneNumber": "+1 4255550199",
"phoneType": "office",
"smsSignInState": "notSupported"
},
{
"@odata.type": "#microsoft.graph.phoneAuthenticationMethod",
"id": "3179e48a-750b-4051-897c-87b9720928f7",
"phoneNumber": "+1 2065555555",
"phoneType": "mobile",
"smsSignInState": "notAllowedByPolicy"
},
{
"@odata.type": "#microsoft.graph.passwordAuthenticationMethod",
"id": "28c10230-6103-485e-b985-444c60001490",
"password": null,
"createdDateTime": "2023-09-18T10:38:07Z"
}
]
}
Bestätigen Sie, dass Sie beide Telefonnummern wie erwartet sehen können. Die IDs der verschiedenen Telefonnummerntypen sind für Microsoft Entra ID wie folgt global gleich:
b6332ec1-7057-4abe-9331-3d72feddfe41 für alternateMobile phone type
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
await graphClient.Users["{user-id}"].Authentication.PhoneMethods["{phoneAuthenticationMethod-id}"].DeleteAsync();
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
//other-imports
)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
graphClient.Users().ByUserId("user-id").Authentication().PhoneMethods().ByPhoneAuthenticationMethodId("phoneAuthenticationMethod-id").Delete(context.Background(), nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
graphClient.users().byUserId("{user-id}").authentication().phoneMethods().byPhoneAuthenticationMethodId("{phoneAuthenticationMethod-id}").delete();
<?php
use Microsoft\Graph\GraphServiceClient;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$graphServiceClient->users()->byUserId('user-id')->authentication()->phoneMethods()->byPhoneAuthenticationMethodId('phoneAuthenticationMethod-id')->delete()->wait();
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
await graph_client.users.by_user_id('user-id').authentication.phone_methods.by_phone_authentication_method_id('phoneAuthenticationMethod-id').delete()
Die Anforderung gibt einen 204 No Content Antwortcode zurück. Um zu überprüfen, ob die Bürotelefonmethode aus Camerons Konto entfernt wurde, führen Sie die Anforderung in Schritt 4 erneut aus. Cameron sollte jetzt nur noch über die Authentifizierungsmethoden für Mobiltelefone und Kennwörter verfügen.
Schritt 6: Zurücksetzen des Kennworts des Benutzers
Cameron hat sein Kennwort vergessen, und Sie müssen es für sie zurücksetzen. Sie können das Kennwort eines Benutzers zurücksetzen und ein temporäres Kennwort angeben, oder Sie können Microsoft Entra ID das Generieren eines temporären Kennworts erlauben.
In beiden Methoden enthält die Antwort einen Location-Header mit einer URL, mit der Sie den Status des Vorgangs über einen GET-Vorgang überprüfen können. Der Vorgang zum Zurücksetzen wird nicht sofort abgeschlossen, da microsoft Entra ID das Kennwort synchronisieren muss, einschließlich in Active Directory in der lokalen Infrastruktur des Mandanten (für lokale Benutzer). Die URL ist 24 Stunden gültig.
Option 1: Zurücksetzen des Kennworts des Benutzers und Angeben eines temporären neuen Kennworts
Option 2: Zurücksetzen des Kennworts des Benutzers und Zulassen der Generierung eines temporären neuen Kennworts durch Microsoft Entra ID
In dieser Anforderung geben Sie kein neues Kennwort an, sondern lassen stattdessen Microsoft Entra ID ein Kennwort generieren und in der Antwort zurückgeben.
POST https://graph.microsoft.com/v1.0/users/CameronW@Contoso.com/authentication/passwordMethods/28c10230-6103-485e-b985-444c60001490/resetPassword
GET https://graph.microsoft.com/v1.0/users/a87cc624-b550-4559-b934-3bc0325a4808/authentication/operations/ba0c9a11-5163-4353-89ba-81501617ede0?aadgdc=AM4P&aadgsu=ssprprod-a
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Users["{user-id}"].Authentication.Operations["{longRunningOperation-id}"].GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Aadgdc = "AM4P";
requestConfiguration.QueryParameters.Aadgsu = "ssprprod-a";
});
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphusers "github.com/microsoftgraph/msgraph-sdk-go/users"
//other-imports
)
requestAadgdc := "AM4P"
requestAadgsu := "ssprprod-a"
requestParameters := &graphusers.ItemAuthenticationOperationsItemRequestBuilderGetQueryParameters{
Aadgdc: &requestAadgdc,
Aadgsu: &requestAadgsu,
}
configuration := &graphusers.ItemAuthenticationOperationsItemRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
operations, err := graphClient.Users().ByUserId("user-id").Authentication().Operations().ByLongRunningOperationId("longRunningOperation-id").Get(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
LongRunningOperation result = graphClient.users().byUserId("{user-id}").authentication().operations().byLongRunningOperationId("{longRunningOperation-id}").get(requestConfiguration -> {
requestConfiguration.queryParameters.aadgdc = "AM4P";
requestConfiguration.queryParameters.aadgsu = "ssprprod-a";
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.users.item.authentication.operations.item.long_running_operation_item_request_builder import LongRunningOperationItemRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = LongRunningOperationItemRequestBuilder.LongRunningOperationItemRequestBuilderGetQueryParameters(
aadgdc = "AM4P",
aadgsu = "ssprprod-a",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
result = await graph_client.users.by_user_id('user-id').authentication.operations.by_long_running_operation_id('longRunningOperation-id').get(request_configuration = request_configuration)
HTTP/1.1 202 Accepted
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('a87cc624-b550-4559-b934-3bc0325a4808')/authentication/operations/$entity",
"@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET users('<guid>')/authentication/operations('<guid>')?$select=createdDateTime,lastActionDateTime",
"id": "ba0c9a11-5163-4353-89ba-81501617ede0",
"createdDateTime": "2024-01-18T16:37:10Z",
"lastActionDateTime": "2024-01-18T16:37:10Z",
"status": "succeeded",
"statusDetail": "ResetSuccess",
"resourceLocation": "https://graph.microsoft.com/v1.0/users/a87cc624-b550-4559-b934-3bc0325a4808/authentication/methods/28c10230-6103-485e-b985-444c60001490"
}
API-Referenz
Suchen Sie die API-Referenz für Authentifizierungsmethoden?