Azure Spatial Anchors に対する認証と承認
この記事では、アプリまたは Web サービスから Azure Spatial Anchors に対する認証を実行できるさまざまな方法について説明します。 Microsoft Entra ID で Azure ロールベースのアクセス制御 (Azure RBAC) を使用して、Spatial Anchors アカウントへのアクセスを制御する方法についても説明します。
警告
クイック オンボードではアカウント キーを使用することをお勧めしますが、これは開発/プロトタイプ作成中のみ行うことをお勧めします。 アカウント キーが組み込まれたアプリケーションを運用環境で使用することはお勧めしません。 代わりに、次に説明するユーザーベースまたはサービスベースの Microsoft Entra 認証方法を使用してください。
概要
特定の Azure Spatial Anchors アカウントにアクセスするには、まずクライアントで Azure Mixed Reality セキュリティ トークン サービス (STS) からアクセス トークンを取得する必要があります。 STS から取得したトークンは、24 時間有効です。 それには Spatial Anchors サービスでアカウントの承認決定を行うために使用する情報が含まれており、承認されたプリンシパルのみがアカウントにアクセスできるようにします。
アクセス トークンは、アカウント キーまたは Microsoft Entra ID によって発行されたトークンのいずれかと引き換えに取得できます。
アカウント キーを使用すると、Azure Spatial Anchors サービスの使用をすぐに開始できます。 ただし、アプリケーションを運用環境にデプロイする前に、Microsoft Entra 認証を使用するようにアプリを更新することをお勧めします。
Microsoft Entra 認証トークンは、2 つの方法で取得できます:
- エンタープライズ アプリケーションをビルドしていて、会社の ID システムとして Microsoft Entra ID を使用している場合は、アプリ内でユーザーベースの Microsoft Entra 認証を使用できます。 その後、既存の Microsoft Entra セキュリティ グループを使用して、Spatial Anchors アカウントにアクセス権を付与します。 組織内のユーザーに直接アクセス権を付与することもできます。
- それ以外の場合は、アプリをサポートしている Web サービスから Microsoft Entra トークンを取得することをお勧めします。 Azure Spatial Anchors にアクセスするための資格情報をクライアント アプリケーションに埋め込むことを回避できるため、運用アプリケーションではこの方法をお勧めします。
アカウント キー
最も簡単に始める方法は、アカウント キーを使用して自分の Azure Spatial Anchors アカウントにアクセスすることです。 Azure portal で、自分のアカウント キーを取得できます。 自分のアカウントに移動し、[キー] タブを選択します。
2 つのキーを利用できます。 どちらも Spatial Anchors アカウントにアクセスするために同時に有効になっています。 アカウントへのアクセスに使用するキーを定期的に更新することをお勧めします。 2 つの独立した有効なキーを用意することで、ダウンタイムなしで更新を行うことができます。 必要なのは、プライマリ キーとセカンダリ キーを交互に更新することだけです。
SDK には、アカウント キーを使用した認証のサポートが組み込まれています。 必要なのは、cloudSession
オブジェクトに AccountKey
プロパティを設定することだけです。
this.cloudSession.Configuration.AccountKey = @"MyAccountKey";
そのプロパティを設定すると、SDK によって、アクセス トークンのためのアカウント キーの交換とアプリで必要なトークンのキャッシュが処理されるようになります。
Microsoft Entra ユーザー認証
Microsoft Entra ユーザーを対象とするアプリケーションでは、ユーザー用の Microsoft Entra トークンを使用することをお勧めします。 このトークンは、MSAL を使用することで取得できます。 アプリの登録に関するクイックスタートの手順に従います。以下の手順が含まれます。
Azure Portal で
アプリケーションをネイティブ アプリケーションとして Microsoft Entra に登録します。 登録の一環として、アプリケーションをマルチテナントにする必要があるかどうかを決める必要があります。 アプリケーションで許可されるリダイレクト URL も指定する必要があります。
[API のアクセス許可] タブに移動します。
[アクセス許可の追加] を選択します。
- [所属する組織で使用している API] タブの [Mixed Reality Resource Provider]\(Mixed Reality リソース プロバイダー\) を選択します。
- デリゲートされたアクセス許可を選択します。
- [mixedreality] の下にある [mixedreality.signin] を選択します。
- アクセス許可の追加 を選択します。
[管理者の同意の付与] を選択します。
リソースへのアクセスを与えるアプリケーションまたはユーザーに ASA RBAC の役割を割り当てます。 アプリケーションのユーザーに ASA アカウントとは異なるロールを割り当てる場合は、複数のアプリケーションを Microsoft Entra ID に登録し、それぞれに別のロールを割り当てます。 次に、ユーザーに適切なロールを使用するために承認ロジックを実装します。 詳細なロール割り当て手順については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。
コードで
- MSAL の client ID と RedirectUri パラメーターに自分の Microsoft Entra アプリケーションのアプリケーション ID とリダイレクト URI を使用することを確認します。
- テナント情報を設定します。
- 自分のアプリケーションで [所属する組織のみ] がサポートされる場合は、この値を自分のテナント ID またはテナント名に置き換えます。 例: contoso.microsoft.com。
- 自分のアプリケーションで [任意の組織のディレクトリ内のアカウント] がサポートされる場合は、この値を organizations に置き換えます。
- 自分のアプリケーションで [すべての Microsoft アカウント ユーザー] がサポートされる場合は、この値を Common に置き換えます。
- トークン要求で、スコープを
https://sts.mixedreality.azure.com//.default
に設定します。 このスコープでは、アプリケーション上で Mixed Reality セキュリティ トークン サービス (STS) に対してトークンを要求していることを Microsoft Entra ID に示します。
これらの手順を完了すると、アプリケーションで MSAL から Microsoft Entra トークンを取得できるようになります。 その Microsoft Entra トークンを、authenticationToken
としてクラウド セッション構成オブジェクトに設定できます:
this.cloudSession.Configuration.AuthenticationToken = @"MyAuthenticationToken";
Microsoft Entra サービス認証
Azure Spatial Anchors を使用するアプリを運用環境にデプロイするには、認証要求を仲介するバックエンド サービスを使用することをお勧めします。 プロセスの概要を以下に示します。
ここでは、自分のアプリで独自のメカニズムを使用して、バックエンド サービスに対する認証を行うことを前提としています (たとえば、Microsoft アカウント、PlayFab、Facebook、Google ID、カスタム ユーザー名とパスワードなど)。ユーザーがバックエンド サービスに対して認証された後、そのサービスで Microsoft Entra トークンを取得し、それを Azure Spatial Anchors 用のアクセス トークンと交換してクライアント アプリケーションに返すことができます。
Microsoft Entra アクセス トークンは、MSAL を介して取得されます。 アプリの登録のクイックスタートに関するページの手順に従います。以下の手順が含まれます。
Azure Portal で
- Microsoft Entra ID でアプリケーションを登録します:
- Azure portal で [Microsoft Entra ID] 選択し、[アプリの登録] を選択します。
- [新規登録] を選択します。
- アプリケーションの名前を入力し、アプリケーションの種類として [Web アプリ/API] を選択し、サービスの認証 URL を入力します。 [作成] を選択します
- アプリケーションで、[設定] を選択し、[証明書とシークレット] タブを選択します。新しいクライアント シークレットを作成し、期間を選択し、[追加] を選択します。 シークレット値を必ず保存してください。 それを Web サービスのコードに含める必要があります。
- リソースへのアクセスを与えるアプリケーションまたはユーザーに ASA RBAC の役割を割り当てます。 アプリケーションのユーザーに ASA アカウントとは異なるロールを割り当てる場合は、複数のアプリケーションを Microsoft Entra ID に登録し、それぞれに別のロールを割り当てます。 次に、ユーザーに適切なロールを使用するために承認ロジックを実装します。 詳細なロール割り当て手順については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。
コードで
Note
Spatial Anchors のサンプル アプリの一部として利用可能なサービス サンプルを使用できます。
- 自分の Microsoft Entra アプリケーションのアプリケーション ID、アプリケーション シークレット、およびリダイレクト URI を、MSAL の client ID、secret、および RedirectUri の各パラメーターとして使用することを確認します。
- 自分の Microsoft Entra テナント ID に対する tenant ID を、MSAL の authority パラメーターに設定します。
- トークン要求で、スコープを
https://sts.mixedreality.azure.com//.default
に設定します。
これらの手順を完了すると、バックエンド サービスによって Microsoft Entra トークンを取得できます。 その後、クライアントに返される MR トークンに交換できます。 Microsoft Entra トークンを使用した MR トークンの取得は、REST 呼び出しで行われます。 呼び出しの例を次に示します。
GET https://sts.mixedreality.azure.com/Accounts/35d830cb-f062-4062-9792-d6316039df56/token HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni<truncated>FL8Hq5aaOqZQnJr1koaQ
Host: sts.mixedreality.azure.com
Connection: Keep-Alive
HTTP/1.1 200 OK
Date: Sun, 24 Feb 2019 08:00:00 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 1153
Accept: application/json
MS-CV: 05JLqWeKFkWpbdY944yl7A.0
{"AccessToken":"eyJhbGciOiJSUzI1NiIsImtpZCI6IjI2MzYyMTk5ZTI2NjQxOGU4ZjE3MThlM2IyMThjZTIxIiwidHlwIjoiSldUIn0.eyJqdGkiOiJmMGFiNWIyMy0wMmUxLTQ1MTQtOWEzNC0xNzkzMTA1NTc4NzAiLCJjYWkiOiIzNWQ4MzBjYi1mMDYyLTQwNjItOTc5Mi1kNjMxNjAzOWRmNTYiLCJ0aWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJhaWQiOiIzNWQ4MzBjYi1mMDYyLTQwNjItOTc5Mi1kNjMxNjAzOWRmNTYiLCJhYW8iOi0xLCJhcHIiOiJlYXN0dXMyIiwicmlkIjoiL3N1YnNjcmlwdGlvbnMvNzIzOTdlN2EtNzA4NC00ODJhLTg3MzktNjM5Y2RmNTMxNTI0L3Jlc291cmNlR3JvdXBzL3NhbXBsZV9yZXNvdXJjZV9ncm91cC9wcm92aWRlcnMvTWljcm9zb2Z0Lk1peGVkUmVhbGl0eS9TcGF0aWFsQW5jaG9yc0FjY291bnRzL2RlbW9fYWNjb3VudCIsIm5iZiI6MTU0NDU0NzkwMywiZXhwIjoxNTQ0NjM0MzAzLCJpYXQiOjE1NDQ1NDc5MDMsImlzcyI6Imh0dHBzOi8vbXJjLWF1dGgtcHJvZC50cmFmZmljbWFuYWdlci5uZXQvIiwiYXVkIjoiaHR0cHM6Ly9tcmMtYW5jaG9yLXByb2QudHJhZmZpY21hbmFnZXIubmV0LyJ9.BFdyCX9UJj0i4W3OudmNUiuaGgVrlPasNM-5VqXdNAExD8acFJnHdvSf6uLiVvPiQwY1atYyPbOnLYhEbIcxNX-YAfZ-xyxCKYb3g_dbxU2w8nX3zDz_X3XqLL8Uha-rkapKbnNgxq4GjM-EBMCill2Svluf9crDmO-SmJbxqIaWzLmlUufQMWg_r8JG7RLseK6ntUDRyDgkF4ex515l2RWqQx7cw874raKgUO4qlx0cpBAB8cRtGHC-3fA7rZPM7UQQpm-BC3suXqRgROTzrKqfn_g-qTW4jAKBIXYG7iDefV2rGMRgem06YH_bDnpkgUa1UgJRRTckkBuLkO2FvA"}
Authorization ヘッダーは、次のように書式設定されます。Bearer <Azure_AD_token>
応答には、プレーン テキストの MR トークンが含まれます。
その MR トークンは、その後、クライアントに返されます。 クライアント アプリで、それをアクセス トークンとしてクラウド セッション構成に設定できます。
this.cloudSession.Configuration.AccessToken = @"MyAccessToken";
Azure ロールベースのアクセス制御
アプリケーション、サービス、またはサービスの Microsoft Entra ユーザーに付与されるアクセスのレベルを制御するために、必要に応じて、ご使用の Azure Spatial Anchors アカウントに次の既存のロールを割り当てることができます:
- Spatial Anchors アカウント所有者。 このロールが割り当てられているアプリケーションまたはユーザーは、空間アンカーの作成、それらのクエリ、およびそれらの削除を実行できます。 アカウント キーを使用してアカウントを認証すると、認証されたプリンシパルに Spatial Anchors アカウント所有者ロールが割り当てられます。
- Spatial Anchors アカウント共同作成者。 このロールが割り当てられているアプリケーションまたはユーザーは、空間アンカーの作成とそれらのクエリを実行できますが、それらを削除することはできません。
- Spatial Anchors アカウント閲覧者。 このロールが割り当てられているアプリケーションまたはユーザーは、空間アンカーのクエリのみを実行できます。 新規作成、既存のものの削除、またはそれらのメタデータの更新を行うことはできません。 このロールは、通常は、一部のユーザーが環境をキュレートし、他のユーザーは環境に既に配置されているアンカーの呼び戻しのみを実行できる環境で使用されます。
次のステップ
Azure Spatial Anchors を使用する初めてのアプリを作成します。