Skapa en Avancerad läsare resurs och konfigurera Azure Active Directory autentisering
I den här artikeln tillhandahåller vi ett skript som skapar en Avancerad läsare resurs och konfigurerar Azure Active Directory -autentisering (Azure AD). Varje gång en Avancerad läsare resurs skapas, oavsett om det här skriptet eller portalen körs, måste den också konfigureras med Azure AD-behörigheter. Det här skriptet hjälper dig med det.
Skriptet är utformat för att skapa och konfigurera alla nödvändiga Avancerad läsare och Azure AD-resurser åt dig alla i ett enda steg. Men du kan också bara konfigurera Azure AD-autentisering för en Avancerad läsare resurs. Om du till exempel redan har skapat en i Azure Portal.
För vissa kunder kan det vara nödvändigt att skapa flera Avancerad läsare resurser, för utveckling jämfört med produktion, eller kanske för flera olika regioner som tjänsten distribueras i. I dessa fall kan du komma tillbaka och använda skriptet flera gånger för att skapa olika Avancerad läsare-resurser och konfigurera dem med Azure AD-behörigheter.
Skriptet är utformat för att vara flexibelt. Den söker först efter befintliga Avancerad läsare och Azure AD-resurser i din prenumeration och skapar dem endast efter behov om de inte redan finns. Om det är första gången du skapar Avancerad läsare resurs gör skriptet allt du behöver. Om du vill använda den bara för att konfigurera Azure AD för en Avancerad läsare resurs som skapades i portalen gör den det också. Den kan också användas för att skapa och konfigurera flera Avancerad läsare resurser.
Konfigurera PowerShell-miljö
Börja med att öppna Azure Cloud Shell. Se till Cloud Shell är inställt på PowerShell i den övre vänstra listrutan eller genom att skriva
pwsh.Kopiera och klistra in följande kodfragment i gränssnittet.
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) }Kör funktionen
Create-ImmersiveReaderResourceoch ange platshållarna "<PARAMETER_VALUES>" nedan med dina egna värden efter behov.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>'Det fullständiga kommandot ser ut ungefär så här. Här har vi satt varje parameter på en egen rad för tydlighetens skull, så att du kan se hela kommandot. Kopiera inte och använd inte det här kommandot som det är. Kopiera och använd kommandot ovan med dina egna värden. Det här exemplet har dummyvärden för "<PARAMETER_VALUES>" ovan. Din kommer att vara annorlunda, eftersom du kommer att ta fram egna namn för dessa värden.
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 Kommentarer SubscriptionName Namnet på den Azure-prenumeration som ska användas för din Avancerad läsare resurs. Du måste ha en prenumeration för att kunna skapa en resurs. ResourceName Måste vara alfanumeriskt och kan innehålla "-", så länge "-" inte är det första eller sista tecknet. Längden får inte överskrida 63 tecken. ResourceSubdomain En anpassad underdomän krävs för din Avancerad läsare resurs. Underdomänen används av SDK:n när den anropar Avancerad läsare tjänsten för att starta läsaren. Underdomänen måste vara globalt unik. Underdomänen måste vara alfanumerisk och kan innehålla "-", så länge "-" inte är det första eller sista tecknet. Längden får inte överskrida 63 tecken. Den här parametern är valfri om resursen redan finns. ResourceSKU Alternativ: S0(Standard-nivå)S1eller (Education/Nonprofit-organisationer). Besök vår Cognitive Services för mer information om varje tillgänglig SKU. Den här parametern är valfri om resursen redan finns.ResourceLocation Alternativ: eastus, , , , , , , , ,eastus2, , ,southcentralus,westuswestus2australiaeastsoutheastasiacentralindiajapaneastnortheuropeuksouthwesteurope. Den här parametern är valfri om resursen redan finns.ResourceGroupName Resurser skapas i resursgrupper i prenumerationer. Ange namnet på en befintlig resursgrupp. Om resursgruppen inte redan finns skapas en ny med det här namnet. ResourceGroupLocation Om resursgruppen inte finns måste du ange en plats där du kan skapa gruppen. Om du vill hitta en lista över platser kör du az account list-locations. Använd namnegenskapen (utan blanksteg) för det returnerade resultatet. Den här parametern är valfri om resursgruppen redan finns.AADAppDisplayName Programmets Azure Active Directory visningsnamn. Om ett befintligt Azure AD-program inte hittas skapas ett nytt med det här namnet. Den här parametern är valfri om Azure AD-programmet redan finns. AADAppIdentifierUri URI för Azure AD-appen. Om en befintlig Azure AD-app inte hittas skapas en ny med denna URI. Till exempel https://immersivereaderaad-mycompany.AADAppClientSecret Ett lösenord som du skapar som används senare för att autentisera när du hämtar en token för att starta Avancerad läsare. Lösenordet måste vara minst 16 tecken långt, innehålla minst ett specialtecken och innehålla minst ett numeriskt tecken. Om du vill hantera Azure AD-programklienthemligheter när du har skapat den här resursen går du till avsnittet Start https://portal.azure.com -> Azure Active Directory -> Appregistreringar -> ->-certifikat och hemligheter -> Client Secrets (se skärmbilden "Hantera dina [AADAppDisplayName]Azure AD-programhemligheter" nedan).AADAppClientSecretExpiration Det datum eller den datetime som ska upphöra att gälla [AADAppClientSecret](t.ex. '2020-12-31T11:59:59+00:00' eller '2020-12-31').Hantera azure AD-programhemligheter

Kopiera JSON-utdata till en textfil för senare användning. Resultatet bör likna följande.
{ "TenantId": "...", "ClientId": "...", "ClientSecret": "...", "Subdomain": "..." }
Nästa steg
- Visa snabbstartenNode.js för att se vad du kan göra med Avancerad läsare SDK med Node.js
- Visa Android-självstudien för att se vad du kan göra mer med Avancerad läsare SDK med Java eller Kotlin för Android
- Visa iOS-självstudien för att se vad du kan göra med Avancerad läsare SDK med Swift för iOS
- Visa Python-självstudien för att se vad du kan göra mer med Avancerad läsare SDK med Hjälp av Python
- Utforska Avancerad läsare SDK och Avancerad läsare SDK-referensen