Delen via


Problemen met azure Digital Twins mislukte serviceaanvraag oplossen: fout 404 (subdomein niet gevonden)

In dit artikel worden oorzaken en oplossingsstappen beschreven voor het ontvangen van een 404-fout van serviceaanvragen naar Azure Digital Twins. Deze informatie is specifiek voor de Azure Digital Twins-service.

Symptomen

Deze fout kan optreden bij het openen van een Azure Digital Twins-exemplaar met behulp van een service-principal of gebruikersaccount dat deel uitmaakt van een andere Microsoft Entra-tenant van het exemplaar. Het lijkt erop dat de juiste rollen aan de identiteit zijn toegewezen, maar API-aanvragen mislukken met een foutstatus van 404 Sub-Domain not found.

Oorzaken

Oorzaak 1

Azure Digital Twins vereist dat alle verificatiegebruikers deel uitmaken van dezelfde Microsoft Entra-tenant als het Azure Digital Twins-exemplaar.

Als gevolg hiervan is voor aanvragen voor de Azure Digital Twins-API's een gebruiker of service-principal vereist die deel uitmaakt van dezelfde tenant waarin het Azure Digital Twins-exemplaar zich bevindt. Om kwaadwillende scans van Azure Digital Twins-eindpunten te voorkomen, retourneren aanvragen met toegangstokens van buiten de oorspronkelijke tenant een foutbericht '404 Sub-Domain niet gevonden'. Deze fout wordt geretourneerd, zelfs als de gebruiker of service-principal een Azure Digital Twins-gegevenseigenaar of Azure Digital Twins-gegevenslezerrol heeft gekregen via Microsoft Entra B2B-samenwerking.

Oplossingen

Oplossing #1

U kunt dit probleem oplossen door elke gefedereerde identiteit uit een andere tenant een token aan te vragen van de 'home'-tenant van het Azure Digital Twins-exemplaar.

Een van de manieren om dit te doen, is met de volgende CLI-opdracht, waarbij <home-tenant-ID> de id is van de Microsoft Entra-tenant die het Azure Digital Twins-exemplaar bevat:

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

Na deze aanvraag ontvangt de identiteit een token dat is uitgegeven voor de https://digitaltwins.azure.net Microsoft Entra-resource, die een overeenkomende tenant-id-claim heeft voor het Azure Digital Twins-exemplaar. Als u dit token gebruikt in API-aanvragen of met uw Azure.Identity code, moet de federatieve identiteit toegang hebben tot de Azure Digital Twins-resource.

Oplossing 2

Als u de DefaultAzureCredential class in uw code gebruikt en u dit probleem blijft tegenkomen nadat u een token hebt opgehaald, kunt u de thuistenant specificeren in de DefaultAzureCredential opties om de tenant te verduidelijken, zelfs als de authenticatie standaard is ingesteld op een ander type.

In het volgende voorbeeld ziet u hoe u een voorbeeld van een tenant-id instelt voor InteractiveBrowserTenantId in de DefaultAzureCredential opties:

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);
}

Er zijn vergelijkbare opties beschikbaar om een tenant in te stellen voor verificatie met Visual Studio en Visual Studio Code. Zie de documentatie van DefaultAzureCredentialOptions voor meer informatie over de beschikbare opties.

Volgende stappen

Meer informatie over beveiliging en machtigingen voor Azure Digital Twins: