HoloLens の共有Microsoft Entra アカウント

HoloLens の共有Microsoft Entra (旧称 Azure Active Directory) アカウントは、資格情報を必要とせずに HoloLens にサインインできる通常のMicrosoft Entraユーザー アカウントです。 このセットアップは、次の条件が満たされるシナリオに最適です。

  • 複数のユーザーが同じ HoloLens デバイスのセットを共有する
  • Dynamics 365 Guides コンテンツなどのMicrosoft Entra リソースへのアクセスが必要です
  • デバイスを使用したユーザーを追跡する必要はありません。

共有Microsoft Entra アカウントを使用する主な利点

  • デプロイが簡略化されました。 以前は、複数のユーザー間で共有Microsoft Entraアカウントを設定する場合は、各デバイスを手動で設定する必要があります。 共有Microsoft Entra アカウントを使用すると、環境を 1 回構成し、Autopilot の一部として任意のデバイスに自動的に展開できます。
  • 優れたユーザー エクスペリエンス。 共有Microsoft Entra アカウントのユーザーは、デバイスの使用を開始するために資格情報を入力する必要はありません。 タップして移動します。
  • Microsoft Entra リソースへのアクセス。 共有Microsoft Entra アカウントのユーザーは、リモート アシスト通話を開始したり、追加認証なしでガイドを開いたりできるように、Microsoft Entraリソースに簡単にアクセスできます。

重要

共有Microsoft Entra アカウントは資格情報を入力せずに HoloLens デバイスでアクセスできるため、承認された担当者のみがアクセスできるように、これらの HoloLens デバイスを物理的にセキュリティで保護する必要があります。 条件付きアクセス ポリシーを適用し、セルフサービス パスワード リセットを無効にし、これらのアカウントが使用されているデバイスに割り当てられたアクセス プロファイルを構成することで、これらのアカウントをロックダウンすることもできます。

注意

これらは共有アカウントであるため、これらのアカウントを使用しているユーザーには、PIN と虹彩の登録、生体認証データ収集通知、さまざまな同意画面など、一般的な最初のサインインセットアップ画面は表示されません。 ポリシーを使用してこれらのアカウントに対して適切な既定値が構成されていること (「HoloLens 2でユーザーをすばやく設定する」を参照) と、ユーザーがこれらの既定値を認識していることを確認する必要があります。

共有Microsoft Entra アカウントの既知の制限事項

  • 共有Microsoft Entra アカウントは、登録されている場合でも、現在のリリースでのサインインに PIN または iris を使用することはできません。

共有Microsoft Entra アカウントの概念の概要

このプロセスにより、HoloLens デバイスにユーザー アカウントを割り当て、デバイスとデバイスにリンクされている資格情報を使用してそのユーザー アカウントにサインインできます。 この画像では、プロセスについて説明します。

共有アカウントの図

  1. Intune には、SCEP サービスの SCEP 構成プロファイルがあります。
  2. デバイスは Intune に参加し、プロファイル情報を受け取ります。
  3. デバイスは SCEP サービスにアクセスし、UPN HL-{Serial}@contoso.comが のデバイス証明書を受け取ります。
  4. デバイスは、証明書を MFA として使用して Entra ID の正しいユーザー アカウントにログインし、シームレスなサインオン エクスペリエンスを提供します。

証明書をデバイスから削除またはエクスポートすることはできません。ユーザー アカウントは、他の形式の MFA を使用できないように構成されています。 この構成により、共有アカウントは HoloLens デバイスでのみログインできるようになります。

共有Microsoft Entra アカウントを構成する手順の概要

HoloLens の共有Microsoft Entra アカウントは、Microsoft Entra証明書ベースの認証 (CBA) 用に構成された通常のMicrosoft Entra ユーザー アカウントとして実装されます。

大まかに言うと、共有Microsoft Entra アカウントの構成には、次の手順が含まれます。

  1. (推奨)Autopilot を使用してMicrosoft Entraに参加し、Intune に登録するようにターゲット デバイスを構成します。
  2. Microsoft Entra テナントを構成して、選択したアカウント グループMicrosoft Entra CBA を有効にします
  3. Microsoft Intuneを構成して、次のデバイスの選択したグループにデバイス構成を適用します。
    1. Intune の SCEP 証明書プロファイルを使用して、Microsoft Entra CBA に使用されるクライアント証明書をデバイスに展開します。
    2. デバイス がクライアント証明書の発行者を信頼するように CA 証明書を展開します。
    3. CBA に対して有効な証明書をデバイスに指示する共有アカウント構成Microsoft Entra展開します。
  4. 共有Microsoft Entra アカウント用に個々のデバイスを準備します。

前提条件

共有Microsoft Entra アカウントのサポートは、Microsoft HoloLens ビルド 10.0.22621.1217 の Insider プレビューから利用できます。

必要なオペレーティング システムを HoloLens 上に構築するだけでなく、CBA Microsoft Entraの前提条件 (証明書ベースの認証Microsoft Entra構成する方法) も満たす必要があります。

最後に、デバイス構成とクライアント証明書を展開するために、Microsoft Intuneにアクセスする必要があります。 Intune 経由でクライアント証明書を展開するために必要なインフラストラクチャについては、「Microsoft Intuneでサポートされている証明書の種類について」を参照してください。 この例では、SCEP 証明書を使用します。

注意

Microsoft NDES や PKI など、SCEP 証明書を展開するための複数のオプションを使用できます。 HoloLens の場合、Azure サービスを使用して証明書の登録を処理する方が簡単です。 (Azure Marketplace内で複数のオプションを使用できます。これにより、HoloLens 共有 Microsft Entra アカウントの構成を企業 PKI から分離できます。

SCEP サービスの主な要件は次のとおりです。

  1. サービスは、Microsoft Intuneからのデバイス証明書要求を受け入れます。
  2. サービスは、定義された EKU (クライアント認証とスマート カード ログオン) を使用して証明書を生成できます。

Autopilot 用にデバイスを構成することを強くお勧めします。 Autopilot を使用すると、エンド ユーザーのデバイス セットアップ エクスペリエンスが簡素化されます。

Microsoft Entra CBA を有効にするようにMicrosoft Entra テナントを構成する

Microsoft Entra テナントは、選択したユーザー グループMicrosoft Entra CBA を有効にするように構成する必要があります。

  1. 共有Microsoft Entra アカウントを含むMicrosoft Entra グループを作成します。 たとえば、このグループには "SharedAccounts" という名前を使用します。
  2. 共有 HoloLens デバイスを含むMicrosoft Entra グループを作成します。 たとえば、このグループには "SharedDevices" という名前を使用します。 このグループには、後でデバイス ベースの Intune 構成プロファイルが割り当てられます。
  3. SharedAccounts グループMicrosoft Entra証明書ベースの認証 (CBA) を有効にします。 詳細なステップ バイ ステップ ガイドについては、「証明書ベースの認証Microsoft Entra構成する方法」を参照してください。 これを設定するには、次の大まかな手順が必要です。
    1. (証明機関) CA 証明書をMicrosoft Entraに追加します。 Microsoft Entra IDを使用すると、この CA によって発行されたクライアント証明書で CBA を実行できます。
    2. "SharedAccounts" グループに対して CBA を有効にします。
    3. CA によって発行された証明書が MFA を使用するように CBA を構成します。 この手順では、ユーザーが別の要素を設定せずに MFA を必要とするリソースにアクセスできるようにします。
    4. UserPrincipalName を使用して証明書のバインドを有効にします。

Intune の構成

Microsoft Entra CBA に必要な証明書を展開するように Intune を構成する必要があります。 また、Intune では、Microsoft Entra CBA に対して有効な証明書をデバイスに指示する構成を展開する必要があります。

SCEP を使用したクライアント証明書のデプロイ

デバイスには、CBA を実行するための適切なクライアント証明書Microsoft Entra必要があります。 SCEP 構成を作成し、それを "SharedDevices" に割り当てます。

  1. 証明書の種類: デバイス

  2. ユーザー プリンシパル名 (UPN) サブジェクトの別名 (SAN) を追加します。この値は、デバイスに割り当てられている共有アカウントの UPN です。 UPN には、デバイスに関連付けるデバイスのシリアル番号が含まれている必要があります。 Intune 変数 {{Device_Serial}} を 使用して、デバイスのシリアル番号を参照できます。 たとえば、共有アカウントの名前形式が の HL-{{Device_Serial}}@contoso.com 場合は、 の HL-123456789@contoso.com値を入力します。

  3. キー ストレージ プロバイダー (KSP): [TPM が必要です。それ以外の場合は失敗] を選択して、証明書をデバイスからエクスポートして他の場所で使用できないようにします。

  4. 証明書に少なくとも次の 拡張キー使用法 (EKU) があることを確認します。

    • スマートカード ログオン: 1.3.6.1.4.1.311.20.2.2
    • クライアント認証: 1.3.6.1.5.5.7.3.2

    この一覧に他の EKU を追加して、CBA で許可される証明書をさらに制限Microsoft Entra。 これらの EKU を ConfigureSharedAccount ポリシーの XML に追加する必要があります。

SCEP 構成の例

Intune で SCEP を構成する詳細な手順については、「Microsoft Intuneで SCEP 証明書プロファイルを使用する」を参照してください。

CA 証明書の展開

デバイスは、クライアント証明書を発行した CA も信頼する必要があります。 信頼された証明書構成を作成し、"SharedDevices" グループに割り当てます。 この割り当てにより、CA 証明書がデバイスに展開されます。 「ドキュメント: Microsoft Intuneで信頼された証明書プロファイルを作成する」を参照してください。

ConfigureSharedAccount ポリシー

このポリシーは、Microsoft Entra CBA に使用する有効な証明書をデバイスに通知します。 カスタム デバイス構成ポリシーを作成し、"SharedDevices" に割り当てます。

ポリシー データ型
./Vendor/MSFT/Policy/Config/MixedReality/ConfigureSharedAccount 文字列または文字列 (XML ファイル)

構成の例

<SharedAccountConfiguration>
    <SharedAccount>
        <!--
          TODO: Replace the example value below with your issuer certificate's thumbprint.
          You may customize the restrictions for which certificates are displayed. See below.
        -->
        <IssuerThumbprint>77de0879f69314d867bd08fcf2e8e6616548b3c8</IssuerThumbprint>
    </SharedAccount>
</SharedAccountConfiguration>

Microsoft Entra CBA に対して証明書を表示する制限をカスタマイズできます。 上記の例では、発行者の証明書の拇印が指定された値と一致している必要があります。 また、発行者の名前に基づいて制限を適用したり、証明書の拡張キー使用法 (EKU) に基づいてさらに制限を適用したりすることもできます。 XML を構成する方法の例については、「ConfigureSharedAccount XML の例」を参照してください。

このデバイス構成を保存する前に、「 ConfigureSharedAccount XML スキーマ 」で指定されているスキーマに対して XML を検証し、正しい形式であることを確認します。

個々のデバイス構成

共有Microsoft Entra アカウント用に構成する HoloLens デバイスごとに、次の手順を実行します。

  1. SCEP を使用したクライアント証明書の展開の手順 2 で指定した形式で、Microsoft Entra ユーザーを作成します。 (例: HL-123456789@contoso.com)。
  2. そのユーザーを "SharedAccounts" グループに追加します。
  3. デバイスが "SharedDevices" グループに追加されていることを確認します。 デバイスが既にMicrosoft Entraに存在するように、まず Autopilot 用にデバイスを構成する必要があります。

このプロセスを自動化するために使用できる PowerShell スクリプトの例については、「 デバイス セットアップ スクリプトの例」を参照してください。

構成のテスト

上記の構成を完了したら、HoloLens で共有Microsoft Entra アカウントを試す準備ができました。

デバイスが既に Autopilot 用に構成されている場合は、通常の Autopilot フローを介してデバイスを取得します。 必要なデバイス構成は、Autopilot 中に適用されます。 Autopilot フローが完了すると、次の画面が表示されます。

共有アカウントを示すサインイン画面

[サインイン] ボタンをタップして、共有Microsoft Entra アカウントの使用を開始します。

トラブルシューティング

問題: 共有Microsoft Entra アカウントがサインイン画面に表示されません。

ソリューション:まず、デバイスが正しい証明書を受信していることをチェックします。 証明書マネージャー (証明書マネージャー) を開き、クライアント証明書と CA 証明書の両方がデバイスに正常に展開されていることを確認します。

クライアント証明書の場合は、"ローカル コンピューター" の "My" ストアにインストールされていることを確認します。

証明書の場所を示す証明書マネージャー

証明書が存在しない場合は、 Intune SCEP プロファイルのトラブルシューティング手順に従います。

証明書が存在する場合は、証明書が有効期間内に、予想される発行者と EKU があることを確認します。

証明書のプロパティを示す証明書マネージャー

次に、MixedReality/ConfigureSharedAccount に適用した XML ポリシー値が整形式であることを確認します。 オンラインで多数の XML スキーマ (XSD) 検証コントロールのいずれかを使用して、XML が ConfigureSharedAccount XML スキーマで説明されているスキーマに準拠していることをチェックできます。

問題: サインイン試行が失敗します。

ソリューション:証明書ベースの認証を構成する方法に関するページの手順に従って、CBA Microsoft Entra正しく構成されていることを確認します。 また、証明書ベースの認証 (CBA) に関する FAQ Microsoft Entraチェック。 場合によっては、最初に Windows デスクトップ デバイスで次のデバッグ手順を試してみると便利な場合があります。証明書ベースの認証を使用した Windows スマート カード サインインMicrosoft Entra

リファレンス

ConfigureSharedAccount XML スキーマ

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="SharedAccountConfiguration">
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:element minOccurs="1" maxOccurs="1" name="SharedAccount">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:choice>
                <xsd:element name="IssuerThumbprint">
                  <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                      <xsd:maxLength value="40" />
                    </xsd:restriction>
                  </xsd:simpleType>
                </xsd:element>
                <xsd:element name="IssuerName">
                  <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                      <xsd:maxLength value="512" />
                    </xsd:restriction>
                  </xsd:simpleType>
                </xsd:element>
              </xsd:choice>
              <xsd:element minOccurs="0" maxOccurs="1" name="EkuOidRequirements">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element maxOccurs="5" name="Oid">
                      <xsd:simpleType>
                        <xsd:restriction base="xsd:string">
                          <xsd:maxLength value="100" />
                        </xsd:restriction>
                      </xsd:simpleType>
                    </xsd:element>
                  </xsd:sequence>
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

ConfigureSharedAccount XML の例

発行者証明書に CN=yourCA、DC=Test のサブジェクトが含まれている必要があります。

<SharedAccountConfiguration>
    <SharedAccount>
        <IssuerName>CN=yourCA, DC=Test</IssuerName>
    </SharedAccount>
</SharedAccountConfiguration>

発行者証明書に指定された拇印が必要です。

<SharedAccountConfiguration>
    <SharedAccount>
        <IssuerThumbprint>77de0879f69314d867bd08fcf2e8e6616548b3c8</IssuerThumbprint>
    </SharedAccount>
</SharedAccountConfiguration>

発行者証明書に指定された拇印があり、クライアント証明書に OID 1.2.3.4.5.6 および 1.2.3.4.5.7 を含む EKU が含まれている必要があります。

<SharedAccountConfiguration>
    <SharedAccount>
        <IssuerThumbprint>77de0879f69314d867bd08fcf2e8e6616548b3c8</IssuerThumbprint>
        <EkuOidRequirements>
            <Oid>1.2.3.4.5.6</Oid>
            <Oid>1.2.3.4.5.7</Oid>
        </EkuOidRequirements>
    </SharedAccount>
</SharedAccountConfiguration>

EKU 1.3.6.1.4.1.311.20.2.2 (Smartcard Logon) と 1.3.6.1.5.5.7.3.2 (クライアント認証) は、このリストに含まれるかどうかに関係なく、常に必要です。

デバイス セットアップ スクリプトの例

このサンプル デバイス セットアップ スクリプトを使用する前に、参照を "contoso" からドメイン名に変更する必要があります。

<#
.Synopsis
Configures a device for shared account

.Description
This script configures a device for shared account.

Note that you'll need to have the necessary permissions in your tenant to manage
user and device memberships and query Intune devices.

.Example
.\ConfigureSharedDevice.ps1 400064793157
#>


param (
    [Parameter(Mandatory = $true)]
    [string]
    # Serial number of the device. Typically a 12-digit numeric string.
    $DeviceSerialNumber,
    [string]
    # Group ID of the group that contains the shared accounts such as HL-123456789@contoso.com
    $SharedAccountGroupId,
    [string]
    # Group ID of the group that contains the shared devices
    $SharedDeviceGroupId
)

function Install-Dependencies {
    Write-Host -Foreground Cyan "Installing Dependencies..."

    if (!(Get-InstalledModule Microsoft.Graph -ErrorAction SilentlyContinue)) {
        Write-Host -Foreground Cyan "Installing Microsoft.Graph"
        Install-Module Microsoft.Graph -Scope CurrentUser -Repository 'PSGallery'
    }

    Write-Host -Foreground Cyan "Installing Dependencies... Done"
}

function New-PasswordString {
    $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_-=+[]{}|;:,.<>/?'
    $length = 40
    $password = ""
    for ($i = 0; $i -lt $length; $i++) {
        $password += $alphabet[(Get-Random -Minimum 0 -Maximum $alphabet.Length)]
    }

    return $password
}

function New-SharedUser {
    param (
        $UserName,
        $DisplayName
    )

    # Does user already exist?
    $searchResult = Get-MgUser -Count 1 -ConsistencyLevel eventual -Search "`"UserPrincipalName:$UserName`""

    if ($searchResult.Count -gt 0) {
        Write-Host -Foreground Cyan "$UserName exists, using existing user."
        return $searchResult
    }

    $mailNickName = $UserName.Split('@')[0];

    Write-Host -Foreground Cyan "Creating $UserName"

    $passwordProfile = @{
        Password = New-PasswordString
    }

    return New-MgUser -AccountEnabled -DisplayName $DisplayName -Country US -UsageLocation US -MailNickname $mailNickName -UserPrincipalName $UserName -PasswordProfile $passwordProfile
}

function New-SharedUserForDevice {
    param (
        $DeviceSerialNumber
    )

    $userName = "HL-$DeviceSerialNumber@contoso.onmicrosoft.com"
    $displayName = "Shared HoloLens"

    return New-SharedUser -UserName $userName -DisplayName $displayName
}

function Add-UserToGroup {
    param (
        $UserId,
        $GroupId
    )

    $groupResult = Get-MgGroup -GroupId $GroupId
    if ($groupResult.Count -eq 0) {
        throw "Failed to find user group"
    }

    Write-Host -Foreground Cyan "Adding user ($UserId) to group"
    New-MgGroupMember -GroupId $GroupId -DirectoryObjectId $UserId
}

function Get-DeviceAADId {
    param (
        $DeviceSerialNumber
    )

    $deviceResult = Get-MgDeviceManagementManagedDevice | Where-Object { $_.SerialNumber -eq $DeviceSerialNumber }

    if ($deviceResult.Count -eq 0) {
        throw "Cannot find device with serial number $DeviceSerialNumber in Intune"
    }

    $result = ($deviceResult | Select-Object -First 1).AzureAdDeviceId

    Write-Host "Found device: $result"

    return $result
}

function Add-DeviceToGroup {
    param (
        $DeviceAADId,
        $GroupId
    )

    $groupResult = Get-MgGroup -GroupId $GroupId
    if ($groupResult.Count -eq 0) {
        throw "Failed to find device group"
    }

    $deviceResult = Get-MgDevice -Count 1 -ConsistencyLevel eventual -Search "`"DeviceId:$DeviceAADId`""
    if ($deviceResult.Count -eq 0) {
        throw "Failed to find device $DeviceAADId"
    }

    Write-Host -Foreground Cyan "Adding device $($deviceResult.Id) to group"
    
    New-MgGroupMember -GroupId $GroupId -DirectoryObjectId $deviceResult.Id
}

function Register-SharedDevice {
    param (
        $DeviceSerialNumber
    )

    Install-Dependencies

    Connect-MgGraph -Scopes "User.ReadWrite.All", "Group.Read.All", "GroupMember.ReadWrite.All", "DeviceManagementManagedDevices.Read.All", "Device.ReadWrite.All"

    $deviceAADId = Get-DeviceAADId $DeviceSerialNumber
    Add-DeviceToGroup $deviceAADId $SharedDeviceGroupId

    $user = New-SharedUserForDevice $DeviceSerialNumber
    Add-UserToGroup $user.Id $SharedAccountGroupId
}

Register-SharedDevice $DeviceSerialNumber