Een resource voor Insluitende lezer maken en Azure Active Directory configureren
In dit artikel bieden we een script voor het maken van een Insluitende lezer resource en configureren Azure Active Directory verificatie (Azure AD). Elke keer dat Insluitende lezer resource wordt gemaakt, met dit script of in de portal, moet deze ook worden geconfigureerd met Azure AD-machtigingen. Dit script helpt u daarbij.
Het script is ontworpen om alle benodigde resources Insluitende lezer Azure AD-resources in één stap voor u te maken en te configureren. U kunt echter ook gewoon Azure AD-verificatie configureren voor een bestaande Insluitende lezer-resource, als u er bijvoorbeeld al een hebt gemaakt in de Azure Portal.
Voor sommige klanten kan het nodig zijn om meerdere Insluitende lezer resources te maken, voor ontwikkeling versus productie, of misschien voor meerdere verschillende regio's waarin uw service is geïmplementeerd. In deze gevallen kunt u het script meerdere keren gebruiken om verschillende resources Insluitende lezer maken en ze te configureren met de Azure AD-machtigingen.
Het script is ontworpen om flexibel te zijn. Er wordt eerst naar bestaande Insluitende lezer en Azure AD-resources in uw abonnement geklikt en alleen indien nodig worden ze alleen als ze nog niet bestaan. Als dit de eerste keer is dat u een resource Insluitende lezer maken, doet het script alles wat u nodig hebt. Als u deze alleen wilt gebruiken om Azure AD te configureren voor een bestaande Insluitende lezer-resource die is gemaakt in de portal, gebeurt dat ook. Het kan ook worden gebruikt voor het maken en configureren van meerdere Insluitende lezer resources.
PowerShell-omgeving instellen
Open eerst de Azure Cloud Shell. Zorg ervoor Cloud Shell in de linkerbovenhoek is ingesteld op PowerShell of door te
pwshtypen.Kopieer en plak het volgende codefragment in de shell.
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="ImmersiveReaderAAD", [Parameter(Mandatory=$true)] [String] $AADAppIdentifierUri, [Parameter(Mandatory=$true)] [String] $AADAppClientSecret, [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 Azure Active Directory 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 Azure Active Directory app" $clientId = az ad app create --password $AADAppClientSecret --end-date "$AADAppClientSecretExpiration" --display-name $AADAppDisplayName --identifier-uris $AADAppIdentifierUri --query "appId" -o tsv if (-not $clientId) { throw "Error: Failed to create Azure Active Directory app" } Write-Host "Azure Active Directory app created successfully." Write-Host "NOTE: To manage your Active Directory app client secrets after this Immersive Reader Resource has been created please visit https://portal.azure.com and go to Home -> Azure Active Directory -> App Registrations -> $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 "objectId" -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 "objectId" -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 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 an Azure AD token $tenantId = az account show --query "tenantId" -o tsv # Collect the information needed to obtain an Azure AD token into one object $result = @{} $result.TenantId = $tenantId $result.ClientId = $clientId $result.ClientSecret = $AADAppClientSecret $result.Subdomain = $ResourceSubdomain Write-Host "Success! " -ForegroundColor Green -NoNewline Write-Host "Save the following JSON object to a text file for future reference:" Write-Output (ConvertTo-Json $result) }Voer de functie
Create-ImmersiveReaderResourceuit om de tijdelijke aanduidingen '<PARAMETER_VALUES>' waar nodig op te geven met uw eigen waarden.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 '<AAD_APP_DISPLAY_NAME>' -AADAppIdentifierUri '<AAD_APP_IDENTIFIER_URI>' -AADAppClientSecret '<AAD_APP_CLIENT_SECRET>' -AADAppClientSecretExpiration '<AAD_APP_CLIENT_SECRET_EXPIRATION>'De volledige opdracht ziet er als volgt uit. Hier hebben we elke parameter voor de duidelijkheid op een eigen regel gezet, zodat u de hele opdracht kunt zien. Kopieer of gebruik deze opdracht niet zoals is. Kopieer en gebruik de bovenstaande opdracht met uw eigen waarden. Dit voorbeeld heeft dummywaarden voor de bovenstaande <PARAMETER_VALUES>'. De uwe is anders, omdat u uw eigen namen voor deze waarden gaat gebruiken.
Create-ImmersiveReaderResource -SubscriptionName 'MyOrganizationSubscriptionName' -ResourceName 'MyOrganizationImmersiveReader' -ResourceSubdomain 'MyOrganizationImmersiveReader' -ResourceSKU 'S0' -ResourceLocation 'westus2' -ResourceGroupName 'MyResourceGroupName' -ResourceGroupLocation 'westus2' -AADAppDisplayName 'MyOrganizationImmersiveReaderAADApp' -AADAppIdentifierUri 'https://MyOrganizationImmersiveReaderAADApp' -AADAppClientSecret 'SomeStrongPassword' -AADAppClientSecretExpiration '2021-12-31'Parameter Opmerkingen SubscriptionName Naam van het Azure-abonnement dat moet worden gebruikt voor uw Insluitende lezer resource. U moet een abonnement hebben om een resource te kunnen maken. ResourceName Moet alfanumeriek zijn en kan '-' bevatten, zolang de '-' niet het eerste of laatste teken is. De lengte mag niet langer zijn dan 63 tekens. ResourceSubdomain Er is een aangepast subdomein nodig voor uw Insluitende lezer resource. Het subdomein wordt gebruikt door de SDK bij het aanroepen van de Insluitende lezer-service om de Lezer te starten. Het subdomein moet wereldwijd uniek zijn. Het subdomein moet alfanumeriek zijn en kan '-' bevatten, zolang het '-' niet het eerste of laatste teken is. De lengte mag niet langer zijn dan 63 tekens. Deze parameter is optioneel als de resource al bestaat. ResourceSKU Opties: S0(Standard-laag) ofS1(onderwijs-/non-profitorganisaties). Ga naar Cognitive Services pagina met prijzen voor meer informatie over elke beschikbare SKU. Deze parameter is optioneel als de resource al bestaat.ResourceLocation Opties: eastuseastus2, , , , ,southcentralus, , , , , , ,westus,westus2australiaeastsoutheastasiacentralindiajapaneastnortheuropeuksouthwesteurope. Deze parameter is optioneel als de resource al bestaat.ResourceGroupName Resources worden gemaakt in resourcegroepen binnen abonnementen. Gebruik de naam van een bestaande resourcegroep. Als de resourcegroep nog niet bestaat, wordt er een nieuwe gemaakt met deze naam. ResourceGroupLocation Als uw resourcegroep niet bestaat, moet u een locatie voor het maken van de groep leveren. Voer uit om een lijst met locaties te az account list-locationsvinden. Gebruik de eigenschap name (zonder spaties) van het geretourneerde resultaat. Deze parameter is optioneel als uw resourcegroep al bestaat.AADAppDisplayName De Azure Active Directory weergavenaam van de toepassing. Als er geen bestaande Azure AD-toepassing wordt gevonden, wordt er een nieuwe met deze naam gemaakt. Deze parameter is optioneel als de Azure AD-toepassing al bestaat. AADAppIdentifierUri De URI voor de Azure AD-app. Als er geen bestaande Azure AD-app wordt gevonden, wordt er een nieuwe app met deze URI gemaakt. Bijvoorbeeld https://immersivereaderaad-mycompany.AADAppClientSecret Een wachtwoord dat u maakt en later wordt gebruikt voor verificatie bij het ophalen van een token om de Insluitende lezer. Het wachtwoord moet ten minste 16 tekens lang zijn, ten minste 1 speciaal teken bevatten en ten minste 1 numeriek teken bevatten. Als u clientgeheimen van de Azure AD-toepassing wilt beheren nadat u deze resource hebt gemaakt, gaat u naar de sectie https://portal.azure.com Start -> Azure Active Directory ->-app-registraties -> ->-certificaten en geheimen -> Clientgeheimen (zoals weergegeven in de onderstaande schermafbeelding 'Uw [AADAppDisplayName]Azure AD-toepassingsgeheimen beheren').AADAppClientSecretExpiration De datum of datum/tijd waarna uw verloopt [AADAppClientSecret](bijvoorbeeld '2020-12-31T11:59:59+00:00' of '2020-12-31').Uw Azure AD-toepassingsgeheimen beheren

Kopieer de JSON-uitvoer naar een tekstbestand voor later gebruik. De uitvoer moet er als volgt uitzien.
{ "TenantId": "...", "ClientId": "...", "ClientSecret": "...", "Subdomain": "..." }
Volgende stappen
- Bekijk de Node.js om te zien wat u nog meer kunt doen met de Insluitende lezer SDK met behulp van Node.js
- Bekijk de zelfstudie over Android om te zien wat u nog meer kunt doen met de Insluitende lezer-SDK met Java of Kotlin voor Android
- Bekijk de iOS-zelfstudie om te zien wat u nog meer kunt doen met de Insluitende lezer-SDK met behulp van Swift voor iOS
- Bekijk de Python-zelfstudie om te zien wat u nog meer kunt doen met de Insluitende lezer SDK met behulp van Python
- De SDK voor Insluitende lezer en de naslaginformatie voor de SDK voor Insluitende lezer verkennen