Condividi tramite


Risolvere i problemi relativi alla richiesta del servizio Gemelli digitali di Azure non riuscita: Errore 404 (sottodominio non trovato)

Questo articolo descrive le cause e i passaggi di risoluzione per la ricezione di un errore 404 dalle richieste di servizio a Gemelli digitali di Azure. Queste informazioni sono specifiche del servizio Gemelli digitali di Azure.

Sintomi

Questo errore può verificarsi quando si accede a un'istanza di Gemelli digitali di Azure usando un'entità servizio o un account utente appartenente a un tenant Microsoft Entra diverso dall'istanza. I ruoli corretti sembrano essere assegnati all'identità, ma le richieste API hanno esito negativo con lo stato di errore .404 Sub-Domain not found

Cause

Causa n. 1

Gemelli digitali di Azure richiede che tutti gli utenti che eseguono l'autenticazione appartengano allo stesso tenant di Microsoft Entra dell'istanza di Gemelli digitali di Azure.

Di conseguenza, le richieste alle API di Gemelli digitali di Azure richiedono un utente o un'entità servizio che fa parte dello stesso tenant in cui risiede l'istanza di Gemelli digitali di Azure. Per impedire la scansione malevola degli endpoint di Azure Digital Twins, le richieste con token di accesso dall'esterno del tenant di origine restituiscono il messaggio di errore "404 Sub-Domain non trovato". Questo errore viene restituito anche se all'utente o all'entità servizio è stato assegnato un ruolo di Proprietario dei dati di Azure Digital Twins o Lettore dati di Azure Digital Twins tramite Microsoft Entra B2B.

Soluzioni

Soluzione n. 1

È possibile risolvere questo problema avendo ogni identità federata da un altro tenant richiedere un token dal tenant "home" dell'istanza di Gemelli digitali di Azure.

Un modo per eseguire questa operazione consiste nel comando dell'interfaccia della riga di comando seguente, dove <home-tenant-ID> è l'ID del tenant di Microsoft Entra che contiene l'istanza di Gemelli digitali di Azure:

az account get-access-token --tenant <home-tenant-ID> --resource https://digitaltwins.azure.net

Dopo questa richiesta, l'identità riceve un token rilasciato per la https://digitaltwins.azure.net risorsa Microsoft Entra, che ha un'attestazione ID tenant corrispondente all'istanza di Gemelli digitali di Azure. L'uso di questo token nelle richieste API o con il Azure.Identity codice deve consentire all'identità federata di accedere alla risorsa di Gemelli digitali di Azure.

Soluzione n. 2

Se si usa la DefaultAzureCredential classe nel codice e si continua a riscontrare questo problema dopo aver ottenuto un token, è possibile specificare il tenant principale nelle DefaultAzureCredential opzioni per chiarire il tenant anche quando l'autenticazione è predefinita su un altro tipo.

L'esempio seguente illustra come impostare un valore di ID tenant di esempio per InteractiveBrowserTenantId nelle DefaultAzureCredential opzioni:

public class DefaultAzureCredentialOptionsSample
{
    // The URL of your instance, starting with the protocol (https://)
    private const string adtInstanceUrl = "https://<your-Azure-Digital-Twins-instance-URL>";

    private static DefaultAzureCredentialOptions credentialOptions = new DefaultAzureCredentialOptions()
    {
        ExcludeSharedTokenCacheCredential = true,
        ExcludeVisualStudioCodeCredential = true,
        TenantId = "<your-Azure-Active-Directory-tenant-ID>"
    };

    private static DefaultAzureCredential credential = new DefaultAzureCredential(credentialOptions);

    DigitalTwinsClient client = new DigitalTwinsClient(new Uri(adtInstanceUrl), credential);
}

Sono disponibili opzioni simili per impostare un tenant per l'autenticazione con Visual Studio e Visual Studio Code. Per altre informazioni sulle opzioni disponibili, vedere la documentazione di DefaultAzureCredentialOptions.

Passaggi successivi

Altre informazioni sulla sicurezza e sulle autorizzazioni per Gemelli digitali di Azure: