Choose the permission or permissions marked as least privileged for this API. Use a higher privileged permission or permissions only if your app requires it. For details about delegated and application permissions, see Permission types. To learn more about these permissions, see the permissions reference.
Permission type
Least privileged permissions
Higher privileged permissions
Delegated (work or school account)
Policy.ReadWrite.ConditionalAccess
Policy.ReadWrite.AuthenticationMethod
Delegated (personal Microsoft account)
Not supported.
Not supported.
Application
Policy.ReadWrite.ConditionalAccess
Policy.ReadWrite.AuthenticationMethod
For delegated scenarios, the calling user must also be assigned at least the Conditional Access Administrator or Security AdministratorMicrosoft Entra role.
You can specify the following properties when creating an authenticationStrengthPolicy.
Property
Type
Description
displayName
String
The display name of the policy to be created. Required.
description
String
The description of the policy to be created. Optional.
allowedCombinations
authenticationMethodModes collection
The authentication method combinations allowed by this authentication strength policy. The possible values of this flagged enum are: password, voice, hardwareOath, softwareOath, sms, fido2, windowsHelloForBusiness, microsoftAuthenticatorPush, deviceBasedPush, temporaryAccessPassOneTime, temporaryAccessPassMultiUse, email, x509CertificateSingleFactor, x509CertificateMultiFactor, federatedSingleFactor, federatedMultiFactor, unknownFutureValue. For the list of allowed combinations, call the List authenticationMethodModes API. Required.
Response
If successful, this method returns a 201 Created response code and an authenticationStrengthPolicy object in the response body.
POST https://graph.microsoft.com/v1.0/policies/authenticationStrengthPolicies
Content-Type: application/json
Content-length: 239
{
"@odata.type" : "#microsoft.graph.authenticationStrengthPolicy",
"displayName": "Contoso authentication level",
"description": "The only authentication level allowed to access our secret apps",
"allowedCombinations": [
"password, hardwareOath",
"password, sms"
]
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Models;
var requestBody = new AuthenticationStrengthPolicy
{
OdataType = "#microsoft.graph.authenticationStrengthPolicy",
DisplayName = "Contoso authentication level",
Description = "The only authentication level allowed to access our secret apps",
AllowedCombinations = new List<AuthenticationMethodModes?>
{
AuthenticationMethodModes.Password | AuthenticationMethodModes.HardwareOath,
AuthenticationMethodModes.Password | AuthenticationMethodModes.Sms,
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Policies.AuthenticationStrengthPolicies.PostAsync(requestBody);
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
AuthenticationStrengthPolicy authenticationStrengthPolicy = new AuthenticationStrengthPolicy();
authenticationStrengthPolicy.setOdataType("#microsoft.graph.authenticationStrengthPolicy");
authenticationStrengthPolicy.setDisplayName("Contoso authentication level");
authenticationStrengthPolicy.setDescription("The only authentication level allowed to access our secret apps");
LinkedList<AuthenticationMethodModes> allowedCombinations = new LinkedList<AuthenticationMethodModes>();
allowedCombinations.add(AuthenticationMethodModes.Password);
allowedCombinations.add(AuthenticationMethodModes.HardwareOath);
allowedCombinations.add(AuthenticationMethodModes.Password);
allowedCombinations.add(AuthenticationMethodModes.Sms);
authenticationStrengthPolicy.setAllowedCombinations(allowedCombinations);
AuthenticationStrengthPolicy result = graphClient.policies().authenticationStrengthPolicies().post(authenticationStrengthPolicy);
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see: https://aka.ms/ContentUserFeedback.