Microsoft Graph を使用してユーザーの認証方法を管理する

認証方法は、ユーザーがMicrosoft Entra IDで認証する方法です。 次の認証方法は、現在Microsoft Entra IDで利用でき、Microsoft Graph を通じて管理できます。

  • Windows Hello for Business
  • Microsoft Authenticator アプリ
  • FIDO2 セキュリティ キー
  • 証明書ベースの認証
  • OATH ハードウェア トークン (プレビュー)
  • OATH ソフトウェア トークン
  • 一時アクセス パス (TAP)
  • SMS
  • 音声
  • Password

認証方法は、プライマリ、セカンドファクター、およびステップアップ認証で使用され、セルフサービスパスワードリセット (SSPR) プロセスでも使用されます。

認証方法 API では何ができますか?

認証方法 API を使用して、ユーザーの認証方法を管理するためにアプリに統合できます。 たとえば、次のようなことが可能です。

  • ユーザーの電話番号を追加します。ユーザーは、その番号をポリシーで使用できるようになっている場合、その番号をSMSと音声通話の認証に使用できます。
  • ユーザーに割り当てられた電話番号を更新または削除する
  • SMS サインイン用の番号を有効または無効にする
  • ユーザーのパスワードを再設定します

重要

監査またはセキュリティのチェック目的でユーザーの作成全体を反復処理する必要があるシナリオでは、認証方法 API を使用することはお勧めしません。 これらの種類のシナリオでは、 認証方法の登録と使用状況レポート API を 使用することをお勧めします (一部の API はエンドポイントでのみ使用できます beta )。

ポリシーを使用してテナント内の認証方法を管理する

認証方法ポリシーを構成することで、テナント内のユーザーに許可される 認証方法を選択できます。 ポリシーごとに、認証方法を有効にするかどうか、その設定を構成し、メソッドの使用を許可または許可されていないユーザーのグループを明示的に定義できます。

シナリオ例

この記事では、次の方法について説明します。

  • 適切なロールとアクセス許可を使用してMicrosoft Entra IDを認証する
  • ユーザーの認証方法を確認する
  • ユーザーの新しい電話番号を追加する
  • ユーザー情報から電話番号を削除する
  • ユーザーのパスワードをリセットする

手順 1: 適切なロールとアクセス許可を使用してMicrosoft Entra IDを認証する

少なくとも特権認証管理者または認証管理者Microsoft Entraロールを持つアカウントを使用して、Graph エクスプローラー などの API クライアントにサインインします。 サンプル データを含むテスト テナントを使用して、API を試すことができます。

次に、アプリに UserAuthenticationMethod.ReadWrite.All アクセス許可を付与します。 このシナリオでは、読み取り操作と書き込み操作の両方を実行するには、このアクセス許可が必要です。

これで、API の使用を開始できます。 このシナリオでは、API を使用して、キャメロン ホワイトの認証方法を管理します。

ステップ 2: ユーザーの認証方法を確認する

要求

GET https://graph.microsoft.com/v1.0/users/CameronW@Contoso.com/authentication/methods

応答

この応答から、キャメロンはパスワード認証方法のみを有効にしています。 28c10230-6103-485e-b985-444c60001490は、Microsoft Entra ID全体のパスワード認証方法のグローバルに一意の 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"
        }
    ]
}

ステップ 3: ユーザーの新しい電話番号を追加する

この手順では、キャメロンが使用する新しい 携帯電話 番号を追加します。

要求

POST https://graph.microsoft.com/v1.0/users/CameronW@Contoso.com/authentication/phoneMethods
Content-Type: application/json

{
    "phoneNumber": "+1 2065555555",
    "phoneType": "mobile"
}

応答

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('CameronW%40contoso.com')/authentication/phoneMethods/$entity",
    "id": "3179e48a-750b-4051-897c-87b9720928f7",
    "phoneNumber": "+1 2065555555",
    "phoneType": "mobile",
    "smsSignInState": "notAllowedByPolicy"
}

Office phoneType を追加して、同じ要求を実行します。

手順 4: ユーザーの認証方法を確認する

要求

GET https://graph.microsoft.com/v1.0/users/CameronW@Contoso.com/authentication/methods

応答

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"
        }
    ]
}

両方の数値が正しく表示されることを確認します。 さまざまな電話番号の種類の ID は、次のようにMicrosoft Entra ID全体でグローバルに同じです。

  • b6332ec1-7057-4abe-9331-3d72feddfe41alternateMobile 電話の種類
  • e37fc753-ff3b-4958-9484-eaa9425c82bcOffice Phone タイプの場合
  • 3179e48a-750b-4051-897c-87b9720928f7携帯電話の種類の場合

手順 5: ユーザーから電話番号を削除する

キャメロンは現在自宅で働いているので、自分のアカウントから オフィス 番号を削除する必要があります。

DELETE https://graph.microsoft.com/v1.0/users/CameronW@Contoso.com/authentication/phoneMethods/e37fc753-ff3b-4958-9484-eaa9425c82bc

要求は、204 No Content 応答コードを返します。 Office Phone メソッドがキャメロンのアカウントから削除されたことを確認するには、手順 4 で要求を再実行します。 これで、キャメロンは携帯電話とパスワードの認証方法のみを使用する必要があります。

手順 6: ユーザーのパスワードをリセットする

キャメロンはパスワードを忘れたので、パスワードをリセットする必要があります。 ユーザーのパスワードをリセットして一時パスワードを指定するか、一時パスワードMicrosoft Entra ID生成できます。

どちらの方法でも、応答には、GET 操作を介して操作の状態をチェックするために使用できる URL を含む Location ヘッダーが含まれています。 テナントのオンプレミス インフラストラクチャ (オンプレミス ユーザーの場合) で Active Directory にダウンするなど、Microsoft Entra IDパスワードを同期する必要がある場合、リセット操作はすぐには完了しません。 URL は 24 時間有効です。

オプション 1: ユーザーのパスワードをリセットし、一時的な新しいパスワードを指定する

要求

POST https://graph.microsoft.com/v1.0/users/CameronW@Contoso.com/authentication/passwordMethods/28c10230-6103-485e-b985-444c60001490/resetPassword
Content-Type: application/json

{
    "newPassword": "29sdjfw#fajsdA_a_3an3223"
}

応答

HTTP/1.1 202 Accepted

Location: https://graph.microsoft.com/v1.0/users/a87cc624-b550-4559-b934-3bc0325a4808/authentication/operations/cc8e9b0e-7495-47f2-ad4a-3daa966543c6?aadgdc=DUB02P&aadgsu=ssprprod-a

オプション 2: ユーザーのパスワードをリセットし、一時的な新しいパスワードMicrosoft Entra ID生成できるようにする

この要求では、新しいパスワードを指定せず、代わりにMicrosoft Entra IDパスワードを生成して応答で返すようにします。

POST https://graph.microsoft.com/v1.0/users/CameronW@Contoso.com/authentication/passwordMethods/28c10230-6103-485e-b985-444c60001490/resetPassword

応答

HTTP/1.1 202 Accepted

Location: https://graph.microsoft.com/v1.0/users/a87cc624-b550-4559-b934-3bc0325a4808/authentication/operations/ba0c9a11-5163-4353-89ba-81501617ede0?aadgdc=AM4P&aadgsu=ssprprod-a
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.passwordResetResponse",
    "newPassword": "Hopu0277"
}

パスワード リセット操作の状態を確認する

要求

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

応答

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 リファレンス

認証方法の API リファレンスをお探しですか?