Partager via


Résoudre l’échec de demandes de service Azure Digital Twins : Erreur 404 (Sous-domaine introuvable)

Cet article décrit les causes et les étapes de résolution relatives à la réception d’une erreur 404 des demandes de service à Azure Digital Twins. Ces informations sont spécifiques au service Azure Digital Twins.

Symptômes

Cette erreur peut se produire lors de l’accès à une instance Azure Digital Twins à l’aide d’un principal de service ou d’un compte d’utilisateur appartenant à un autre locataire Microsoft Entra de l’instance. Les rôles appropriés semblent être affectés à l’identité, mais les demandes d’API échouent avec l’état d’erreur 404 Sub-Domain not found.

Les Causes

Cause no 1

Azure Digital Twins nécessite que tous les utilisateurs qui s’authentifient appartiennent au même tenant Microsoft Entra que l’instance Azure Digital Twins.

Par conséquent, les demandes envoyées aux API Azure Digital Twins nécessitent un utilisateur ou un principal de service qui fait partie du même locataire que celui où réside l’instance Azure Digital Twins. Pour empêcher l’analyse malveillante des points de terminaison Azure Digital Twins, les demandes avec des jetons d’accès provenant de l’extérieur du locataire d’origine retournent un message d’erreur « 404 Sub-Domain introuvable ». Cette erreur est retournée même si l’utilisateur ou l’entité de service a reçu un rôle de propriétaire ou de lecteur de données Azure Digital Twins via la collaboration Microsoft Entra B2B.

Les solutions

Solution no 1

Vous pouvez résoudre ce problème en faisant en sorte que chaque identité fédérée d’un autre locataire demande un jeton à partir du locataire « d’origine » de l’instance Azure Digital Twins.

Une façon de le faire consiste à utiliser la commande CLI suivante, où <home-tenant-ID> est l’ID du tenant Microsoft Entra qui contient l’instance Azure Digital Twins :

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

Après cette demande, l’identité reçoit un jeton émis pour la ressource Microsoft Entra https://digitaltwins.azure.net qui a une revendication d’ID de locataire correspondant à l’instance Azure Digital Twins. L’utilisation de ce jeton dans les demandes d’API ou avec votre code Azure.Identity doit permettre à l’identité fédérée d’accéder à la ressource Azure Digital Twins.

Solution no 2

Si vous utilisez la classe DefaultAzureCredential dans votre code et que vous continuez à rencontrer ce problème après avoir obtenu un jeton, vous pouvez spécifier le tenant principal dans les options DefaultAzureCredential pour clarifier le tenant même si la méthode d'authentification par défaut change.

L’exemple suivant montre comment définir un exemple de valeur d’ID de locataire pour InteractiveBrowserTenantId dans les options DefaultAzureCredential :

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

Des options similaires sont disponibles pour définir un locataire pour l’authentification avec Visual Studio et Visual Studio Code. Pour plus d’informations sur les options disponibles, consultez la documentation de DefaultAzureCredentialOptions.

Étapes suivantes

En savoir plus sur la sécurité et les autorisations sur Azure Digital Twins :