Freigeben über


Fehlerbehebung einer fehlgeschlagenen Service-Anforderung in Azure Digital Twins: Fehler 404 (Unterdomäne nicht gefunden)

In diesem Artikel werden die Ursachen sowie die Schritte zur Behebung im Falle eines 404-Fehlers bei Service Requests für Azure Digital Twins beschrieben. Diese Informationen gelten speziell für den Azure Digital Twins-Dienst.

Symptome

Dieser Fehler kann beim Zugriff auf eine Azure Digital Twins-Instanz mithilfe eines Dienstprinzipals oder Benutzerkontos auftreten, das zu einem anderen Microsoft Entra-Mandanten von der Instanz gehört. Der Identität scheinen die richtigen Rollen zugewiesen zu sein, aber bei API-Anforderungen tritt ein Fehler mit dem Status 404 Sub-Domain not found auf.

Ursachen

Ursache 1

Azure Digital Twins erfordert, dass alle authentifizierenden Benutzer zum gleichen Microsoft Entra-Mandanten gehören wie die Azure Digital Twins-Instanz.

Daher erfordern Anforderungen an die Azure Digital Twins-APIs einen Benutzer oder Dienstprinzipal, der Teil desselben Mandanten ist, in dem sich die Azure Digital Twins-Instanz befindet. Um die böswillige Überprüfung von Azure Digital Twins-Endpunkten zu verhindern, geben Anforderungen mit Zugriffstoken von außerhalb des ursprünglichen Mandanten eine Fehlermeldung "404 Sub-Domain nicht gefunden" zurück. Dieser Fehler wird zurückgegeben, auch wenn Benutzenden oder dem Dienstprinzipal eine Azure Digital Twins Data Owner-Rolle oder Azure Digital Twins Data Reader-Rolle über Microsoft Entra B2B-Zusammenarbeit erteilt wurden.

Lösungen

Lösung 1

Sie können dieses Problem beheben, indem Sie für jede Verbundidentität eines anderen Mandanten ein Token vom Basismandanten der Azure Digital Twins-Instanz anfordern.

Eine Möglichkeit hierzu ist der folgende CLI-Befehl, wobei <home-tenant-ID> die ID des Microsoft Entra-Mandanten ist, der die Azure Digital Twins-Instanz enthält:

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

Nach dieser Anforderung empfängt die Identität ein Token, das für die https://digitaltwins.azure.net Microsoft Entra-Ressource ausgestellt wurde, die über einen übereinstimmenden Mandanten-ID-Anspruch an die Azure Digital Twins-Instanz verfügt. Die Verwendung dieses Tokens in API-Anfragen oder mit Ihrem Azure.Identity-Code sollte es der Verbundidentität ermöglichen, auf die Azure Digital Twins-Ressource zuzugreifen.

Lösung 2

Wenn Sie in Ihrem Code die Klasse DefaultAzureCredential verwenden und dieses Problem nach dem Abrufen eines Tokens weiterhin auftritt, können Sie den Basismandanten in den Optionen vom Typ DefaultAzureCredential angeben, um den Mandanten zu identifizieren, auch wenn von der Authentifizierung standardmäßig ein anderer Typ verwendet wird.

Das folgende Beispiel zeigt, wie der Wert für eine Beispielmandanten-ID für InteractiveBrowserTenantId in den DefaultAzureCredential-Optionen festgelegt wird:

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

In Visual Studio und Visual Studio Code stehen ähnliche Optionen zur Verfügung, um einen Mandanten zur Authentifizierung festzulegen. Weitere Informationen zu den verfügbaren Optionen finden Sie in der DefaultAzureCredentialOptions-Dokumentation.

Nächste Schritte

Informieren Sie sich weiter über die Sicherheit und Berechtigungen in Azure Digital Twins: