Azure Spatial Anchors 的驗證和授權
在本文中,您將瞭解從應用程式或 Web 服務向 Azure Spatial Anchors 進行驗證的各種方式。 您也將瞭解在 Microsoft Entra ID 中使用 Azure 角色型存取控制 (Azure RBAC) 來控制空間錨點帳戶存取的方式。
警告
建議您使用帳戶金鑰快速上線,但只能在開發/原型設計期間使用。 我們不建議您將應用程式寄送至生產環境,其中包含內嵌帳戶金鑰。 請改用使用者型或服務型 Microsoft Entra 驗證方法,如下所述。
概觀
若要存取指定的 Azure Spatial Anchors 帳戶,用戶端必須先從 Azure Mixed Reality Security Token Service (STS) 取得存取權杖。 從 STS 取得的權杖存留期為 24 小時。 它們包含 Spatial Anchors 服務用來對帳戶進行授權決策的資訊,並確保只有授權的主體可以存取帳戶。
您可以取得存取權杖,以換取 Microsoft Entra ID 所簽發的帳戶金鑰或權杖。
帳戶金鑰可讓您快速開始使用 Azure Spatial Anchors 服務。 但在您將應用程式部署至生產環境之前,建議您先更新應用程式以使用 Microsoft Entra 驗證。
您可以透過兩種方式取得 Microsoft Entra 驗證權杖:
- 如果您要建置企業應用程式,且您的公司使用 Microsoft Entra ID 作為其身分識別系統,您可以在應用程式中使用使用者型 Microsoft Entra 驗證。 接著,您可以使用現有的 Microsoft Entra 安全性群組來授與 Spatial Anchors 帳戶的存取權。 您也可以直接將存取權授與組織中的使用者。
- 否則,建議您從支援您應用程式的 Web 服務取得 Microsoft Entra 權杖。 建議您針對生產應用程式使用此方法,因為它可讓您避免將認證內嵌至用戶端應用程式中的 Azure Spatial Anchors 存取權。
帳戶金鑰
開始使用最簡單的方式是使用帳戶金鑰來存取您的 Azure Spatial Anchors 帳戶。 您可以在Azure 入口網站上取得帳戶金鑰。 移至您的帳戶,然後選取 [ 金鑰] 索引卷 標:
有兩個金鑰可供使用。 兩者同時有效,可存取 Spatial Anchors 帳戶。 建議您定期更新用來存取帳戶的金鑰。 有兩個不同的有效金鑰可讓這些更新不停機。 您只需要更新主鍵和次要金鑰。
SDK 內建支援透過帳戶金鑰進行驗證。 您只需要在 物件上 cloudSession
設定 AccountKey
屬性:
this.cloudSession.Configuration.AccountKey = @"MyAccountKey";
設定該屬性之後,SDK 會處理存取權杖的帳戶金鑰交換,以及應用程式權杖的必要快取。
Microsoft Entra 使用者驗證
針對以 Microsoft Entra 使用者為目標的應用程式,建議您為使用者使用 Microsoft Entra 權杖。 您可以使用 MSAL 來取得此權杖 。 請遵循註冊應用程式 快速入門中的 步驟,包括:
在Azure 入口網站
在 Microsoft Entra ID 中將您的應用程式註冊為原生應用程式。 在註冊時,您必須判斷應用程式是否應該是多租使用者。 您也必須提供應用程式允許的重新導向 URL。
移至 [ API 許可權] 索引 標籤。
選取新增權限。
- 在 [我的組織使用的 API] 索引標籤上 ,選取 [混合實境資源提供者 ]。
- 選取委派的權限。
- 在 [混合實境 ] 底下 選取 [mixedreality.signin ]。
- 選取新增權限。
選取授與管理員同意。
將 ASA RBAC 角色 指派給您想要授與資源存取權的應用程式或使用者。 如果您想要讓應用程式的使用者對 ASA 帳戶有不同的角色,請在 Microsoft Entra ID 中註冊多個應用程式,並將個別角色指派給每個應用程式。 然後實作您的授權邏輯,為您的使用者使用正確的角色。 如需詳細的角色指派步驟,請參閱 使用Azure 入口網站 指派 Azure 角色。
在您的程式碼中
- 請務必針對 MSAL 中的用戶端識別碼和 RedirectUri 參數,使用您自己的 Microsoft Entra 應用程式的應用程式 識別碼 和 重新導向 URI。
- 設定租使用者資訊:
- 如果您的應用程式僅支援 我的組織,請將此值取代為您的 租使用者識別碼 或 租使用者名稱 。 例如,contoso.microsoft.com。
- 如果您的應用程式支援 任何組織目錄中 的帳戶,請將此值取代為 組織 。
- 如果您的應用程式支援 所有 Microsoft 帳戶使用者 ,請將此值取代為 Common 。
- 在您的權杖要求上,將 範圍 設定為
https://sts.mixedreality.azure.com//.default
。 此範圍會向 Microsoft Entra 識別碼指出您的應用程式要求混合實境安全性權杖服務 (STS) 的權杖。
完成這些步驟之後,您的應用程式應該能夠從 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 入口網站
- 在 Microsoft Entra 識別碼中註冊您的應用程式:
- 在Azure 入口網站中,選取 [Microsoft Entra ID ],然後選取 [應用程式註冊 ]。
- 選取新增註冊。
- 輸入應用程式的名稱、選取 [Web 應用程式/ API ] 作為應用程式類型,然後輸入服務的驗證 URL。 選取建立。
- 在應用程式上,選取 [設定 ],然後選取 [憑證和秘密] 索引 標籤。建立新的用戶端密碼,選取持續時間,然後選取 [ 新增 ]。 請務必儲存秘密值。 您必須將它包含在 Web 服務的程式碼中。
- 將 ASA RBAC 角色 指派給您想要授與資源存取權的應用程式或使用者。 如果您想要讓應用程式的使用者對 ASA 帳戶有不同的角色,請在 Microsoft Entra ID 中註冊多個應用程式,並將個別角色指派給每個應用程式。 然後實作您的授權邏輯,為您的使用者使用正確的角色。 如需詳細的角色指派步驟,請參閱 使用Azure 入口網站 指派 Azure 角色。
在您的程式碼中
注意
您可以使用 作為 Spatial Anchors 範例應用程式 一部分 的服務範例 。
- 請務必使用您自己 Microsoft Entra 應用程式的應用程式識別碼、應用程式秘密和重新導向 URI 作為 MSAL 中的用戶端識別碼 、 秘密 和 RedirectUri 參數。
- 將租使用者識別碼設定為 MSAL 中授權單位 參數中 您自己的 Microsoft Entra 租使用者識別碼。
- 在您的權杖要求上,將 範圍 設定為
https://sts.mixedreality.azure.com//.default
。
完成這些步驟之後,後端服務可以擷取 Microsoft Entra 權杖。 然後,它可以將它交換回用戶端的 MR 權杖。 透過 REST 呼叫完成使用 Microsoft Entra 權杖來擷取 MR 權杖。 以下是範例呼叫:
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"}
授權標頭的格式如下: Bearer <Azure_AD_token>
回應包含純文字的 MR 權杖。
該 MR 權杖接著會傳回給用戶端。 然後,用戶端應用程式可以在雲端會話組態中將其設定為其存取權杖:
this.cloudSession.Configuration.AccessToken = @"MyAccessToken";
Azure 角色型存取控制
為了協助您控制授與服務應用程式、服務或 Microsoft Entra 使用者的存取層級,您可以視需要指派這些預先存在的角色給 Azure Spatial Anchors 帳戶:
- Spatial Anchors 帳戶擁有者 。 具有此角色的應用程式或使用者可以建立空間錨點、查詢和刪除它們。 當您使用帳戶金鑰向您的帳戶進行驗證時,空間錨點帳戶擁有者角色會指派給已驗證的主體。
- 空間錨點帳戶參與者 。 具有此角色的應用程式或使用者可以建立空間錨點並查詢它們,但無法刪除它們。
- 空間錨點帳戶讀取器 。 具有此角色的應用程式或使用者只能查詢空間錨點。 它們無法建立新專案、刪除現有的專案,或更新其上的中繼資料。 此角色通常用於某些使用者策劃環境的應用程式,但其他角色只能重新叫用先前放置於環境中的錨點。
下一步
使用 Azure Spatial Anchors 建立您的第一個應用程式: