Modern olvasó-erőforrás létrehozása és a Microsoft Entra-hitelesítés konfigurálása
Ez a cikk bemutatja, hogyan hozhat létre Modern olvasó erőforrást a megadott szkript használatával. Ez a szkript a Microsoft Entra-hitelesítést is konfigurálja. Minden alkalommal, amikor létrejön egy Modern olvasó erőforrás, akár ezzel a szkripttel, akár a portálon, Microsoft Entra-engedélyekkel kell konfigurálni.
A szkript létrehozza és konfigurálja az összes szükséges Modern olvasó és Microsoft Entra-erőforrást. A Microsoft Entra-hitelesítést azonban konfigurálhatja egy meglévő Modern olvasó-erőforráshoz is, ha már létrehozott egyet az Azure Portalon. A szkript először megkeresi az előfizetés meglévő Modern olvasó és Microsoft Entra-erőforrásait, és csak akkor hozza létre őket, ha még nem léteznek.
Egyes ügyfelek esetében előfordulhat, hogy több Modern olvasó erőforrást kell létrehozni a fejlesztéshez és az éles környezethez, vagy esetleg olyan régiókhoz, ahol a szolgáltatás üzembe van helyezve. Ezekben az esetekben többször is visszatérhet és használhatja a szkriptet, hogy különböző Modern olvasó erőforrásokat hozzon létre, és Microsoft Entra-engedélyekkel konfigurálja őket.
Jogosultságok
Az Azure-előfizetés felsorolt tulajdonosa rendelkezik az összes szükséges engedéllyel egy Modern olvasó erőforrás létrehozásához és a Microsoft Entra-hitelesítés konfigurálásához.
Ha ön nem tulajdonos, a következő hatókör-specifikus engedélyekre van szükség:
Közreműködő. Az Azure-előfizetéshez legalább közreműködői szerepkörrel kell rendelkeznie:
Alkalmazásfejlesztő. Legalább egy alkalmazásfejlesztői szerepkört kell hozzárendelnie a Microsoft Entra-azonosítóhoz:
További információért lásd: Microsoft Entra beépített szerepkörök.
PowerShell-erőforrások beállítása
Először nyissa meg az Azure Cloud Shellt. Győződjön meg arról, hogy a Cloud Shell PowerShellre van állítva a bal felső legördülő menüben, vagy írja be a kívánt értéket
pwsh
.Másolja és illessze be a következő kódrészletet a rendszerhéjba.
function Create-ImmersiveReaderResource( [Parameter(Mandatory=$true, Position=0)] [String] $SubscriptionName, [Parameter(Mandatory=$true)] [String] $ResourceName, [Parameter(Mandatory=$true)] [String] $ResourceSubdomain, [Parameter(Mandatory=$true)] [String] $ResourceSKU, [Parameter(Mandatory=$true)] [String] $ResourceLocation, [Parameter(Mandatory=$true)] [String] $ResourceGroupName, [Parameter(Mandatory=$true)] [String] $ResourceGroupLocation, [Parameter(Mandatory=$true)] [String] $AADAppDisplayName, [Parameter(Mandatory=$true)] [String] $AADAppIdentifierUri, [Parameter(Mandatory=$true)] [String] $AADAppClientSecretExpiration ) { $unused = '' if (-not [System.Uri]::TryCreate($AADAppIdentifierUri, [System.UriKind]::Absolute, [ref] $unused)) { throw "Error: AADAppIdentifierUri must be a valid URI" } Write-Host "Setting the active subscription to '$SubscriptionName'" $subscriptionExists = Get-AzSubscription -SubscriptionName $SubscriptionName if (-not $subscriptionExists) { throw "Error: Subscription does not exist" } az account set --subscription $SubscriptionName $resourceGroupExists = az group exists --name $ResourceGroupName if ($resourceGroupExists -eq "false") { Write-Host "Resource group does not exist. Creating resource group" $groupResult = az group create --name $ResourceGroupName --location $ResourceGroupLocation if (-not $groupResult) { throw "Error: Failed to create resource group" } Write-Host "Resource group created successfully" } # Create an Immersive Reader resource if it doesn't already exist $resourceId = az cognitiveservices account show --resource-group $ResourceGroupName --name $ResourceName --query "id" -o tsv if (-not $resourceId) { Write-Host "Creating the new Immersive Reader resource '$ResourceName' (SKU '$ResourceSKU') in '$ResourceLocation' with subdomain '$ResourceSubdomain'" $resourceId = az cognitiveservices account create ` --name $ResourceName ` --resource-group $ResourceGroupName ` --kind ImmersiveReader ` --sku $ResourceSKU ` --location $ResourceLocation ` --custom-domain $ResourceSubdomain ` --query "id" ` -o tsv if (-not $resourceId) { throw "Error: Failed to create Immersive Reader resource" } Write-Host "Immersive Reader resource created successfully" } # Create an Microsoft Entra app if it doesn't already exist $clientId = az ad app show --id $AADAppIdentifierUri --query "appId" -o tsv if (-not $clientId) { Write-Host "Creating new Microsoft Entra app" $clientId = az ad app create --display-name $AADAppDisplayName --identifier-uris $AADAppIdentifierUri --query "appId" -o tsv if (-not $clientId) { throw "Error: Failed to create Microsoft Entra application" } Write-Host "Microsoft Entra application created successfully." $clientSecret = az ad app credential reset --id $clientId --end-date "$AADAppClientSecretExpiration" --query "password" | % { $_.Trim('"') } if (-not $clientSecret) { throw "Error: Failed to create Microsoft Entra application client secret" } Write-Host "Microsoft Entra application client secret created successfully." Write-Host "NOTE: To manage your Microsoft Entra application client secrets after this Immersive Reader Resource has been created please visit https://portal.azure.com and go to Home -> Microsoft Entra ID -> App Registrations -> (your app) '$AADAppDisplayName' -> Certificates and Secrets blade -> Client Secrets section" -ForegroundColor Yellow } # Create a service principal if it doesn't already exist $principalId = az ad sp show --id $AADAppIdentifierUri --query "id" -o tsv if (-not $principalId) { Write-Host "Creating new service principal" az ad sp create --id $clientId | Out-Null $principalId = az ad sp show --id $AADAppIdentifierUri --query "id" -o tsv if (-not $principalId) { throw "Error: Failed to create new service principal" } Write-Host "New service principal created successfully" # Sleep for 5 seconds to allow the new service principal to propagate Write-Host "Sleeping for 5 seconds" Start-Sleep -Seconds 5 } Write-Host "Granting service principal access to the newly created Immersive Reader resource" $accessResult = az role assignment create --assignee $principalId --scope $resourceId --role "Cognitive Services Immersive Reader User" if (-not $accessResult) { throw "Error: Failed to grant service principal access" } Write-Host "Service principal access granted successfully" # Grab the tenant ID, which is needed when obtaining a Microsoft Entra token $tenantId = az account show --query "tenantId" -o tsv # Collect the information needed to obtain a Microsoft Entra token into one object $result = @{} $result.TenantId = $tenantId $result.ClientId = $clientId $result.ClientSecret = $clientSecret $result.Subdomain = $ResourceSubdomain Write-Host "`nSuccess! " -ForegroundColor Green -NoNewline Write-Host "Save the following JSON object to a text file for future reference." Write-Host "*****" if($clientSecret -ne $null) { Write-Host "This function has created a client secret (password) for you. This secret is used when calling Microsoft Entra to fetch access tokens." Write-Host "This is the only time you will ever see the client secret for your Microsoft Entra application, so save it now." -ForegroundColor Yellow } else{ Write-Host "You will need to retrieve the ClientSecret from your original run of this function that created it. If you don't have it, you will need to go create a new client secret for your Microsoft Entra application. Please visit https://portal.azure.com and go to Home -> Microsoft Entra ID -> App Registrations -> (your app) '$AADAppDisplayName' -> Certificates and Secrets blade -> Client Secrets section." -ForegroundColor Yellow } Write-Host "*****`n" Write-Output (ConvertTo-Json $result) }
Futtassa a függvényt
Create-ImmersiveReaderResource
, és adja meg a "<PARAMETER_VALUES>" helyőrzőket a saját értékeinek megfelelően.Create-ImmersiveReaderResource -SubscriptionName '<SUBSCRIPTION_NAME>' -ResourceName '<RESOURCE_NAME>' -ResourceSubdomain '<RESOURCE_SUBDOMAIN>' -ResourceSKU '<RESOURCE_SKU>' -ResourceLocation '<RESOURCE_LOCATION>' -ResourceGroupName '<RESOURCE_GROUP_NAME>' -ResourceGroupLocation '<RESOURCE_GROUP_LOCATION>' -AADAppDisplayName '<MICROSOFT_ENTRA_DISPLAY_NAME>' -AADAppIdentifierUri '<MICROSOFT_ENTRA_IDENTIFIER_URI>' -AADAppClientSecretExpiration '<MICROSOFT_ENTRA_CLIENT_SECRET_EXPIRATION>'
A teljes parancs a következőhöz hasonlóan néz ki. Itt minden paramétert a saját sorába helyezünk az egyértelműség érdekében, így az egész parancs látható. Ne másolja és ne használja a parancsot az eredeti módon. Másolja és használja a parancsot a saját értékeivel. Ez a példa hamis értékeket tartalmaz a
<PARAMETER_VALUES>
. A sajátjai eltérőek lehetnek, mivel ezekhez az értékekhez saját neveket kell megadnia.Create-ImmersiveReaderResource -SubscriptionName 'MyOrganizationSubscriptionName' -ResourceName 'MyOrganizationImmersiveReader' -ResourceSubdomain 'MyOrganizationImmersiveReader' -ResourceSKU 'S0' -ResourceLocation 'westus2' -ResourceGroupName 'MyResourceGroupName' -ResourceGroupLocation 'westus2' -AADAppDisplayName 'MyOrganizationImmersiveReaderAADApp' -AADAppIdentifierUri 'api://MyOrganizationImmersiveReaderAADApp' -AADAppClientSecretExpiration '2021-12-31'
Paraméter Megjegyzések SubscriptionName A Modern olvasó erőforráshoz használandó Azure-előfizetés neve. Erőforrás létrehozásához előfizetéssel kell rendelkeznie. ResourceName nevű erőforrásáról Alfanumerikusnak kell lennie, és tartalmazhat -
, ha nem az-
első vagy az utolsó karakter. A hossz nem haladhatja meg a 63 karaktert.ResourceSubdomain Egyéni altartományra van szükség a Modern olvasó erőforráshoz. Az altartományt az SDK használja, amikor meghívja a Modern olvasó szolgáltatást az Olvasó elindításához. Az altartománynak globálisan egyedinek kell lennie. Az altartománynak alfanumerikusnak kell lennie, és tartalmazhat -
, feltéve, hogy nem az-
első vagy az utolsó karakter. A hossz nem haladhatja meg a 63 karaktert. Ez a paraméter nem kötelező, ha az erőforrás már létezik.ResourceSKU Lehetőségek: S0
(Standard szint) vagyS1
(Oktatási/Nonprofit szervezetek). Ha többet szeretne megtudni az egyes elérhető termékváltozatokról, látogasson el az Azure AI-szolgáltatások díjszabási oldalára. Ez a paraméter nem kötelező, ha az erőforrás már létezik.ResourceLocation Beállítások: australiaeast
,brazilsouth
,canadacentral
,centralindia
,centralus
,eastasia
eastus
,eastus2
, ,francecentral
jioindiawest
northeurope
southcentralus
swedencentral
southeastasia
southafricanorth
norwayeast
northcentralus
japaneast
japanwest
koreacentral
germanywestcentral
,switzerlandnorth
, .switzerlandwest
uaenorth
uksouth
westcentralus
westeurope
westus
westus2
westus3
Ez a paraméter nem kötelező, ha az erőforrás már létezik.ResourceGroupName Az erőforrások előfizetéseken belüli erőforráscsoportokban jönnek létre. Adja meg egy meglévő erőforráscsoport nevét. Ha az erőforráscsoport még nem létezik, a rendszer létrehoz egy újat ezzel a névvel. ResourceGroupLocation Ha az erőforráscsoport nem létezik, meg kell adnia egy helyet, ahol létre szeretné hozni a csoportot. A helyek listájának megkereséséhez futtassa a parancsot az account list-locations
. Használja a visszaadott eredmény névtulajdonságát (szóközök nélkül). Ez a paraméter nem kötelező, ha az erőforráscsoport már létezik.AADAppDisplayName A Microsoft Entra alkalmazás megjelenítendő neve. Ha nem található egy meglévő Microsoft Entra-alkalmazás, létrejön egy új, ezzel a névvel ellátott alkalmazás. Ez a paraméter nem kötelező, ha a Microsoft Entra alkalmazás már létezik. AADAppIdentifierUri A Microsoft Entra alkalmazás URI-ja. Ha egy meglévő Microsoft Entra-alkalmazás nem található, létrejön egy új, ezzel az URI-val rendelkező alkalmazás. Például: api://MyOrganizationImmersiveReaderAADApp
. Itt a Microsoft Entra URI-séma alapértelmezett előtagjátapi://
használjuk az ellenőrzött tartományok használatára vonatkozó Microsoft Entra-szabályzattal való kompatibilitás érdekében.AADAppClientSecretExpiration Az a dátum vagy dátumidő, amely után a Microsoft Entra Application Client Secret (jelszó) lejár (például "2020-12-31T11:59:59+00:00" vagy "2020-12-31"). Ez a függvény létrehoz egy ügyfélkulcsot. Ha az erőforrás létrehozása után szeretné kezelni a Microsoft Entra alkalmazás titkos kulcsait, látogasson el az Azure Portalra, és lépjen a Kezdőlapra –>Microsoft Entra-azonosító –>Alkalmazásregisztrációk –> (az alkalmazás)
[AADAppDisplayName]
–>Tanúsítványok és titkos kódok szakasz –>Ügyfél titkos kulcsok szakaszára.Másolja a JSON-kimenetet egy szövegfájlba későbbi használatra. A kimenetnek az alábbihoz hasonlóan kell kinéznie.
{ "TenantId": "...", "ClientId": "...", "ClientSecret": "...", "Subdomain": "..." }