ESC
Type to search...

UserAuthenticationMethod.ReadWrite

Export JSON
Export CSV
Copy URL
Print
Delegated Read/Write User Scope

Allows the app to read and write the signed-in user's authentication methods, including phone numbers and Authenticator app settings. This does not allow the app to see secret information like the signed-in user's passwords, or to sign-in or otherwise use the signed-in user's authentication methods.

Delegated Access App-Only Access

Permission Details

Delegated Permission Admin consent required

Read and write user authentication methods

Allows the app to read and write the signed-in user's authentication methods, including phone numbers and Authenticator app settings. This does not allow the app to see secret information like the signed-in user's passwords, or to sign-in or otherwise use the signed-in user's authentication methods.

Graph Methods

Delegated access App-only access
Methods
GET /me/authentication/emailMethods
GET /me/authentication/emailMethods/{emailMethods-id}
GET /me/authentication/fido2Methods
GET /me/authentication/fido2Methods/{id}
GET /me/authentication/methods
GET /me/authentication/methods/{id}
GET /me/authentication/microsoftAuthenticatorMethods
GET /me/authentication/microsoftAuthenticatorMethods/{microsoftAuthenticatorAuthenticationMethodId}
GET /me/authentication/passwordMethods
GET /me/authentication/passwordMethods/{passwordMethods-id}
GET /me/authentication/phoneMethods
GET /me/authentication/phoneMethods/{phoneMethodId}
GET /me/authentication/platformCredentialMethods
GET /me/authentication/platformCredentialMethods/{platformCredentialAuthenticationMethodId}
GET /me/authentication/softwareOathMethods
GET /me/authentication/softwareOathMethods/{id}
GET /me/authentication/temporaryAccessPassMethods
GET /me/authentication/temporaryAccessPassMethods/{temporaryAccessPassAuthenticationMethodId}
GET /me/authentication/windowsHelloForBusinessMethods
GET /me/authentication/windowsHelloForBusinessMethods/{windowsHelloForBusinessAuthenticationMethodId}
GET /users/{id | userPrincipalName}/authentication/operations/{id}
POST /me/authentication/phoneMethods/{id}/enableSmsSignIn
POST /me/authentication/phoneMethods/{mobilePhoneMethodId}/disableSmsSignIn
POST /users/{id | userPrincipalName}/authentication/emailMethods
POST /users/{id | userPrincipalName}/authentication/phoneMethods
POST /users/{id | userPrincipalName}/authentication/temporaryAccessPassMethods
PATCH /users/{id | userPrincipalName}/authentication/emailMethods/{emailMethods-id}
PATCH /users/{id | userPrincipalName}/authentication/phoneMethods/{phoneMethodId}
DELETE /me/authentication/emailMethods/{emailMethods-id}
DELETE /me/authentication/fido2Methods/{id}
DELETE /me/authentication/microsoftAuthenticatorMethods/{microsoftAuthenticatorAuthenticationMethodId}
DELETE /me/authentication/phoneMethods/{phoneMethodId}
DELETE /me/authentication/platformCredentialMethods/{platformCredentialAuthenticationMethodId}
DELETE /me/authentication/softwareOathMethods/{id}
DELETE /me/authentication/temporaryAccessPassMethods/{id}
DELETE /me/authentication/windowsHelloForBusinessMethods/{windowsHelloForBusinessAuthenticationMethodId}
Methods
GET /identityGovernance/roleManagementAlerts/operations/{longRunningOperationId}
GET /me/authentication/emailMethods
GET /me/authentication/emailMethods/{emailMethods-id}
GET /me/authentication/externalAuthenticationMethods
GET /me/authentication/externalAuthenticationMethods/{externalAuthenticationMethodId}
GET /me/authentication/fido2Methods
GET /me/authentication/fido2Methods/{id}
GET /me/authentication/hardwareOathMethods
GET /me/authentication/hardwareOathMethods/{hardwareOathAuthenticationMethodId}
GET /me/authentication/methods
GET /me/authentication/methods/{id}
GET /me/authentication/microsoftAuthenticatorMethods
GET /me/authentication/microsoftAuthenticatorMethods/{microsoftAuthenticatorAuthenticationMethodId}
GET /me/authentication/passwordlessMicrosoftAuthenticatorMethods
GET /me/authentication/passwordlessMicrosoftAuthenticatorMethods/{id}
GET /me/authentication/passwordMethods
GET /me/authentication/passwordMethods/{passwordMethods-id}
GET /me/authentication/phoneMethods
GET /me/authentication/phoneMethods/{phoneMethodId}
GET /me/authentication/platformCredentialMethods
GET /me/authentication/platformCredentialMethods/{platformCredentialAuthenticationMethodId}
GET /me/authentication/qrCodePinMethod
GET /me/authentication/qrCodePinMethod/standardQRCode
GET /me/authentication/qrCodePinMethod/temporaryQRCode
GET /me/authentication/softwareOathMethods
GET /me/authentication/softwareOathMethods/{id}
GET /me/authentication/temporaryAccessPassMethods
GET /me/authentication/temporaryAccessPassMethods/{temporaryAccessPassAuthenticationMethodId}
GET /me/authentication/windowsHelloForBusinessMethods
GET /me/authentication/windowsHelloForBusinessMethods/{windowsHelloForBusinessAuthenticationMethodId}
GET /users/{id | userPrincipalName}/authentication/methods/{id}
GET /users/{id | userPrincipalName}/authentication/signInPreferences
POST /me/authentication/hardwareOathMethods
POST /me/authentication/hardwareOathMethods/{hardwareOathAuthenticationMethodId}/activate
POST /me/authentication/hardwareOathMethods/{hardwareOathAuthenticationMethodId}/deactivate
POST /me/authentication/hardwareOathMethods/assignAndActivate
POST /me/authentication/hardwareOathMethods/assignAndActivateBySerialNumber
POST /me/authentication/phoneMethods/{id}/enableSmsSignIn
POST /me/authentication/phoneMethods/{mobilePhoneMethodId}/disableSmsSignIn
POST /users/{id | userPrincipalName}/authentication/emailMethods
POST /users/{id | userPrincipalName}/authentication/phoneMethods
POST /users/{id | userPrincipalName}/authentication/temporaryAccessPassMethods
POST /users/{usersId}/authentication/externalAuthenticationMethods
PATCH /me/authentication/qrCodePinMethod/pin
PATCH /me/authentication/qrCodePinMethod/standardQRCode
PATCH /me/authentication/qrCodePinMethod/temporaryQRCode
PATCH /users/{id | userPrincipalName}/authentication/emailMethods/{emailMethods-id}
PATCH /users/{id | userPrincipalName}/authentication/phoneMethods/{phoneMethodId}
PATCH /users/{id | userPrincipalName}/authentication/signInPreferences
PUT /me/authentication/hardwareOathMethods/{hardwareOathAuthenticationMethodId}/device/assignTo/$ref
PUT /me/authentication/qrCodePinMethod
DELETE /me/authentication/emailMethods/{emailMethods-id}
DELETE /me/authentication/fido2Methods/{id}
DELETE /me/authentication/hardwareOathMethods/{hardwareOathAuthenticationMethodId}
DELETE /me/authentication/microsoftAuthenticatorMethods/{microsoftAuthenticatorAuthenticationMethodId}
DELETE /me/authentication/passwordlessMicrosoftAuthenticatorMethods/{id}
DELETE /me/authentication/phoneMethods/{phoneMethodId}
DELETE /me/authentication/platformCredentialMethods/{platformCredentialAuthenticationMethodId}
DELETE /me/authentication/qrCodePinMethod
DELETE /me/authentication/qrCodePinMethod/standardQRCode
DELETE /me/authentication/qrCodePinMethod/temporaryQRCode
DELETE /me/authentication/softwareOathMethods/{id}
DELETE /me/authentication/temporaryAccessPassMethods/{id}
DELETE /me/authentication/windowsHelloForBusinessMethods/{windowsHelloForBusinessAuthenticationMethodId}
DELETE /users/{usersId}/authentication/externalAuthenticationMethods/{externalAuthenticationMethodId}/$ref
Commands
Get-MgBetaExternalIndustryDataOperation
Get-MgBetaUserAuthenticationEmailMethod
Get-MgBetaUserAuthenticationExternalAuthenticationMethod
Get-MgBetaUserAuthenticationFido2Method
Get-MgBetaUserAuthenticationHardwareOathMethod
Get-MgBetaUserAuthenticationMethod
Get-MgBetaUserAuthenticationMicrosoftAuthenticatorMethod
Get-MgBetaUserAuthenticationPasswordlessMicrosoftAuthenticatorMethod
Get-MgBetaUserAuthenticationPasswordMethod
Get-MgBetaUserAuthenticationPhoneMethod
Get-MgBetaUserAuthenticationPlatformCredentialMethod
Get-MgBetaUserAuthenticationQrCodePinMethod
Get-MgBetaUserAuthenticationQrCodePinMethodStandardQrCode
Get-MgBetaUserAuthenticationRequirement
Get-MgBetaUserAuthenticationSoftwareOathMethod
Get-MgBetaUserAuthenticationTemporaryAccessPassMethod
Get-MgBetaUserAuthenticationWindowsHelloForBusinessMethod
Initialize-MgBetaUserAuthenticationHardwareOathMethod
Invoke-MgBetaDeactivateUserAuthenticationHardwareOathMethod
New-MgBetaUserAuthenticationEmailMethod
New-MgBetaUserAuthenticationExternalAuthenticationMethod
New-MgBetaUserAuthenticationHardwareOathMethod
New-MgBetaUserAuthenticationPhoneMethod
New-MgBetaUserAuthenticationTemporaryAccessPassMethod
Remove-MgBetaUserAuthenticationEmailMethod
Remove-MgBetaUserAuthenticationExternalAuthenticationMethod
Remove-MgBetaUserAuthenticationFido2Method
Remove-MgBetaUserAuthenticationHardwareOathMethod
Remove-MgBetaUserAuthenticationMicrosoftAuthenticatorMethod
Remove-MgBetaUserAuthenticationPasswordlessMicrosoftAuthenticatorMethod
Remove-MgBetaUserAuthenticationPhoneMethod
Remove-MgBetaUserAuthenticationPlatformCredentialMethod
Remove-MgBetaUserAuthenticationQrCodePinMethod
Remove-MgBetaUserAuthenticationQrCodePinMethodStandardQrCode
Remove-MgBetaUserAuthenticationSoftwareOathMethod
Remove-MgBetaUserAuthenticationTemporaryAccessPassMethod
Remove-MgBetaUserAuthenticationWindowsHelloForBusinessMethod
Set-MgBetaUserAuthenticationHardwareOathMethodAndActivate
Set-MgBetaUserAuthenticationHardwareOathMethodAndActivateBySerialNumber
Update-MgBetaUserAuthenticationEmailMethod
Update-MgBetaUserAuthenticationPhoneMethod
Update-MgBetaUserAuthenticationQrCodePinMethodPin
Update-MgBetaUserAuthenticationQrCodePinMethodStandardQrCode
Update-MgBetaUserAuthenticationRequirement

Code Examples

C# / .NET SDK
// Install: dotnet add package Microsoft.Graph
// Install: dotnet add package Azure.Identity
using Microsoft.Graph;
using Azure.Identity;

// Delegated permissions - interactive user sign-in
var scopes = new[] { "UserAuthenticationMethod.ReadWrite" };
var options = new InteractiveBrowserCredentialOptions
{
    ClientId = "YOUR_CLIENT_ID",
    TenantId = "YOUR_TENANT_ID",
    RedirectUri = new Uri("http://localhost")
};
var credential = new InteractiveBrowserCredential(options);
var graphClient = new GraphServiceClient(credential, scopes);

// Example: GET /me
var result = await graphClient.Me.GetAsync();
Console.WriteLine($"User: {result?.DisplayName}");
JavaScript / TypeScript
// npm install @azure/msal-browser @microsoft/microsoft-graph-client
import { PublicClientApplication } from "@azure/msal-browser";
import { Client } from "@microsoft/microsoft-graph-client";
import { AuthCodeMSALBrowserAuthenticationProvider } from 
    "@microsoft/microsoft-graph-client/authProviders/authCodeMsalBrowser";

const msalConfig = {
    auth: {
        clientId: "YOUR_CLIENT_ID",
        authority: "https://login.microsoftonline.com/YOUR_TENANT_ID"
    }
};

const pca = new PublicClientApplication(msalConfig);
await pca.initialize();

// Delegated: Login with required scope
const loginResponse = await pca.loginPopup({
    scopes: ["UserAuthenticationMethod.ReadWrite"]
});

const authProvider = new AuthCodeMSALBrowserAuthenticationProvider(pca, {
    account: loginResponse.account,
    scopes: ["UserAuthenticationMethod.ReadWrite"],
    interactionType: "popup"
});

const graphClient = Client.initWithMiddleware({ authProvider });

// Example: GET /me
const result = await graphClient.api("/me").get();
console.log(result);
PowerShell
# Install Microsoft Graph PowerShell module
Install-Module Microsoft.Graph -Scope CurrentUser

# Delegated access - interactive sign-in
Connect-MgGraph -Scopes "UserAuthenticationMethod.ReadWrite"

# Verify connection
Get-MgContext | Select-Object Account, TenantId, Scopes

# Example: GET /me
$result = Invoke-MgGraphRequest -Method GET -Uri "https://graph.microsoft.com/v1.0/me"
$result | ConvertTo-Json -Depth 5


# Always disconnect when done
Disconnect-MgGraph
Python
# pip install msgraph-sdk azure-identity
from azure.identity import InteractiveBrowserCredential, ClientSecretCredential
from msgraph import GraphServiceClient
import asyncio

# Delegated permissions - interactive browser sign-in
credential = InteractiveBrowserCredential(
    client_id="YOUR_CLIENT_ID",
    tenant_id="YOUR_TENANT_ID"
)
scopes = ["UserAuthenticationMethod.ReadWrite"]
client = GraphServiceClient(credential, scopes)

async def get_data():
    # Example: GET /me
    result = await client.me.get()
    print(f"User: {result.display_name}")
    return result

asyncio.run(get_data())

App Registration

1

Navigate to Azure Portal

Go to App registrations in Microsoft Entra admin center

2

Add API Permission

Select your app → API permissions → Add a permission → Microsoft Graph

3

Select Permission Type

Choose Delegated permissions and search for UserAuthenticationMethod.ReadWrite

4

Grant Admin Consent

This permission requires admin consent. Grant consent in the Azure portal.