ユーザーを取得する

名前空間: microsoft.graph

重要

Microsoft Graph の /beta バージョンの API は変更される可能性があります。 実稼働アプリケーションでこれらの API を使用することは、サポートされていません。 v1.0 で API を使用できるかどうかを確認するには、Version セレクターを使用します。

ユーザー オブジェクトのプロパティと関係を取得します。 指定されたIDが agentUserのIDの場合、APIは agentUser オブジェクトのプロパティを返します。

この操作は、既定では、より一般的に使用されるプロパティのサブセットのみを返します。 これらの既定のプロパティは、「プロパティ」セクションに記載されています。 既定で返されないプロパティを取得するには、GET 操作を実行し、$select OData クエリ オプションでプロパティを指定します。 ユーザー リソースは拡張機能をサポートしているため、GET 操作を使用して、ユーザー インスタンスでカスタム プロパティと拡張機能データを取得することもできます。

顧客向けの Microsoft Entra ID を使用する顧客は、この API 操作を使用して詳細を取得することもできます。

この API は、次の国内クラウド展開で使用できます。

グローバル サービス 米国政府機関 L4 米国政府機関 L5 (DOD) 21Vianet が運営する中国

アクセス許可

この API の最小特権としてマークされているアクセス許可またはアクセス許可を選択します。 アプリで必要な場合にのみ、より高い特権のアクセス許可またはアクセス許可を使用します。 委任されたアクセス許可とアプリケーションのアクセス許可の詳細については、「アクセス許可の種類」を参照してください。 これらのアクセス許可の詳細については、「アクセス許可のリファレンス」を参照してください。

アクセス許可の種類 最小特権アクセス許可 より高い特権のアクセス許可
委任 (職場または学校のアカウント) User.Read User.ReadWrite、User.ReadBasic.All、User.Read.All、User.ReadWrite.All、Directory.Read.All、Directory.ReadWrite.All
委任 (個人用 Microsoft アカウント) User.Read User.ReadWrite
アプリケーション User.Read.All User.ReadWrite.All、Directory.Read.All、Directory.ReadWrite.All

注:

User.Readアクセス許可を使用すると、アプリはプロファイルを読み取り、サインインしているユーザーのグループ メンバーシップ、レポート、マネージャーなどの関係のみを検出できます。

特定のシナリオのアクセス許可

  • employeeLeaveDateTime プロパティを読み取るには:
    • 委任されたシナリオでは、サインインしたユーザーには、次の Microsoft Entra ロールの少なくとも 1 つが必要です: ライフサイクル ワークフロー管理者 (最小限の特権)、グローバル閲覧者。アプリには委任された User-LifeCycleInfo.Read.All アクセス許可を付与する必要があります。
    • Microsoft Graph のアクセス許可を持つアプリのみのシナリオでは、アプリに User-LifeCycleInfo.Read.All アクセス許可を付与する必要があります。
  • customSecurityAttributes プロパティを読み取るには:
    • 委任されたシナリオでは、サインインしたユーザーに属性 割り当て管理者 ロールを割り当て、アプリに CustomSecAttributeAssignment.Read.All アクセス許可を付与する必要があります。
    • Microsoft Graph のアクセス許可を持つアプリのみのシナリオでは、アプリに CustomSecAttributeAssignment.Read.All アクセス許可を付与する必要があります。
  • User-Mail.ReadWrite.All は、 otherMails プロパティの読み取りと書き込みを行う最小特権のアクセス許可です。また、ユーザー オブジェクトの識別子関連のプロパティの一部を読み取ることができます。
  • User-PasswordProfile.ReadWrite.All は、パスワード リセット関連のプロパティの読み取りと書き込みを行う最小特権のアクセス許可です。また、ユーザー オブジェクトの識別子関連のプロパティの一部を読み取ることができます。
  • User-Phone.ReadWrite.All は、 businessPhones プロパティと mobilePhone プロパティの読み取りと書き込みを行う最小特権のアクセス許可です。また、ユーザー オブジェクトの識別子関連のプロパティの一部を読み取ることができます。
  • User.EnableDisableAccount.All + User.Read.All は、 accountEnabled プロパティの読み取りと書き込みを行うアクセス許可の最低特権の組み合わせです。

HTTP 要求

サインイン ユーザー:

GET /me

注:

/me エンドポイントの呼び出しにはサインインしているユーザーが必要であり、そのため委任されたアクセス許可が必要です。 /me エンドポイントを使用している場合、アプリケーションのアクセス許可はサポートされていません。

指定した ユーザー または agentUser の場合:

GET /users/{id | userPrincipalName}

ヒント

  • userPrincipalName$ 文字で始まる場合、 GET 要求の URL 構文 /users/$x@y.com400 Bad Request エラー コードで失敗します。 この要求は、URL が OData URL 規則に違反するため失敗します。この規則では、システム クエリ オプションのみに $ 文字のプレフィックスを付けることが求められます。 回避策として、次のように /users の後のスラッシュ (/) を削除し、userPrincipalName をかっこと単一引用符で囲みます: /users('$x@y.com')。 たとえば、/users('$AdeleVance@contoso.com') などです。
  • userPrincipalName を使用して B2B ユーザーにクエリを実行するには、ハッシュ (#) 文字をエンコードします。 つまり、# 記号を %23 に置き換えます。 たとえば、/users/AdeleVance_adatum.com%23EXT%23@contoso.com などです。

オプションのクエリ パラメーター

このメソッドでは、既定で返されないものを含め、特定のプロパティを取得するための $selectOData クエリ パラメーター がサポートされています。 拡張機能のプロパティでは、次のようなクエリ パラメーターもサポートされています。

拡張機能の種類 コメント
onPremisesExtensionAttributes 1-15 $select でのみ返されます。
スキーマ拡張機能 $select でのみ返されます。
オープン拡張機能 [オープン拡張機能を取得する] 操作でのみ返されます。
ディレクトリ拡張機能 $select でのみ返されます。

要求ヘッダー

ヘッダー
Authorization ベアラー {token}。 必須です。 認証と認可についての詳細をご覧ください。

要求本文

このメソッドには、要求本文を指定しません。

応答

成功した場合、このメソッドは応答本文で 200 OK 応答コードと ユーザー または agentUser オブジェクトを返します。 $select を使用して特定のプロパティを指定していない限り、既定のプロパティを返します。 このメソッドは、要求が正常に処理されたが、サーバーが関連するバックグラウンド処理を完了するのにさらに時間を必要とする場合に 202 Accepted を返します。

ID を持つオブジェクトが存在しない場合、このメソッドは 404 Not Found エラー コードを返します。

例 1: サインインしたユーザーまたは認証された agentUser のプロパティを取得する

要求

GET https://graph.microsoft.com/beta/me
応答

次の例は応答を示しています。

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。

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

{
   "displayName": "Adele Vance",
   "givenName": "Adele",
   "jobTitle": "Retail Manager",
   "mail": "AdeleV@contoso.com",
   "mobilePhone": "+1 425 555 0109",
   "officeLocation": "18/2111",
   "preferredLanguage": "en-US",
   "surname": "Vance",
   "userPrincipalName": "AdeleV@contoso.com",
   "id": "87d349ed-44d7-43e1-9a83-5f2406dee5bd"
}

例 2: 指定したユーザーのプロパティを取得する

要求

次の例は要求を示しています。 指定されたIDが agentUserのIDの場合、APIは agentUser オブジェクトのプロパティを返します。

GET https://graph.microsoft.com/beta/users/{id}

応答

次の例は応答を示しています。

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

{
      "displayName": "Adele Vance",
      "givenName": "Adele",
      "jobTitle": "Retail Manager",
      "mail": "AdeleV@contoso.com",
      "mobilePhone": "+1 425 555 0109",
      "officeLocation": "18/2111",
      "preferredLanguage": "en-US",
      "surname": "Vance",
      "userPrincipalName": "AdeleV@contoso.com",
      "id": "87d349ed-44d7-43e1-9a83-5f2406dee5bd"
}

例 3: $selectを使用してユーザーの特定のプロパティを取得する

特定のプロパティを取得するには、OData$select クエリ パラメーターを使用します。 たとえば、 displayNamegivenNamepostalCodeid を返すには、次のクエリ式をクエリに追加します $select=displayName,givenName,postalCode,identities

要求

GET https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}?$select=displayName,givenName,postalCode,identities

応答

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

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users(displayName,givenName,postalCode,identities)/$entity",
    "displayName": "Adele Vance",
    "givenName": "Adele",
    "postalCode": "98004",
    "identities": [
        {
            "signInType": "userPrincipalName",
            "issuer": "contoso.com",
            "issuerAssignedId": "AdeleV@contoso.com"
        }
    ]
}

例 4: ユーザーのカスタム セキュリティ属性の割り当てを取得する

次の例は、ユーザーのカスタム セキュリティ属性の割り当てを取得する方法を示しています。

属性 #1

  • 属性セット: Engineering
  • 属性: Project
  • 属性データ型: 文字列のコレクション
  • 属性値: ["Baker","Cascade"]

属性 #2

  • 属性セット: Engineering
  • 属性: CostCenter
  • 属性データ型: 整数のコレクション
  • 属性値: [1001]

属性 #3

  • 属性セット: Engineering
  • 属性: Certification
  • 属性データ型: ブール値
  • 属性値: true

属性 #4

  • 属性セット: Marketing
  • 属性: EmployeeId
  • 属性データ型: 文字列
  • 属性値: "QN26904"

カスタム セキュリティ属性の割り当てを取得するには、呼び出し元のプリンシパルに属性割り当てリーダーまたは属性割り当て管理者の役割を割り当て、CustomSecAttributeAssignment.ReadWrite.All または CustomSecAttributeAssignment.ReadWrite.All のアクセス許可を付与する必要があります。

カスタム セキュリティ属性の割り当てのその他の例については、「例: Microsoft Graph API を使用してカスタム セキュリティ属性の割り当てを割り当て、更新、一覧表示、または削除する」を参照してください。

要求

GET https://graph.microsoft.com/beta/users/{id}?$select=customSecurityAttributes

応答

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

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users(customSecurityAttributes)/$entity",
    "customSecurityAttributes": {
        "Marketing": {
            "@odata.type": "#microsoft.graph.customSecurityAttributeValue",
            "EmployeeId": "QN26904"
        },
        "Engineering": {
            "@odata.type": "#microsoft.graph.customSecurityAttributeValue",
            "Project@odata.type": "#Collection(String)",
            "Project": [
                "Baker",
                "Cascade"
            ],
            "CostCenter@odata.type": "#Collection(Int32)",
            "CostCenter": [
                1001
            ],
            "Certification": true
        }
    }
}

ユーザーにカスタム セキュリティ属性が割り当てられていない場合、または呼び出し元プリンシパルにアクセス許可がない場合は、次のブロックが応答を示します。

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

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users(customSecurityAttributes)/$entity",
    "customSecurityAttributes": null
}

例 5: ユーザーのスキーマ拡張の値を取得する

この例では、スキーマ拡張の ID は ext55gb1l09_msLearnCourses です。

要求

GET https://graph.microsoft.com/beta/users/4562bcc8-c436-4f95-b7c0-4f8ce89dca5e?$select=ext55gb1l09_msLearnCourses

応答

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

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users(ext55gb1l09_msLearnCourses)/$entity",
    "ext55gb1l09_msLearnCourses": {
        "@odata.type": "#microsoft.graph.ComplexExtensionValue",
        "courseType": "Developer",
        "courseName": "Introduction to Microsoft Graph",
        "courseId": 1
    }
}