Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Votre application cliente peut se connecter à plusieurs environnements Dataverse. Utilisez le service de découverte global pour trouver les environnements auxquels l’utilisateur de votre application peut accéder.
Dans Power Apps, vous pouvez sélectionner dans une liste d’environnements disponibles. Le service de découverte global est la source de ces données. Dans votre propre application, vous pouvez fournir un contrôle de sélection pour permettre aux utilisateurs de choisir l’environnement qu’ils souhaitent utiliser. Leur choix détermine l’environnement auquel votre application doit se connecter.
Avec Dataverse, l’allocation de serveur et d’organisation peut changer dans le cadre de la gestion et de l’équilibrage de charge des centres de données. Par conséquent, le service de découverte global permet de découvrir le serveur qui sert une instance à un moment donné.
Pour plus d′informations :
Service de découverte globale
Le service Global Discovery, parfois appelé GDS, est un ensemble de points de terminaison OData v4.0 disponibles pour cinq clouds différents.
Remarque
Bien que l’API web Dataverse et le service de découverte globale soient des points de terminaison OData v4.0, ils constituent deux points de terminaison distincts au comportement différent.
Le tableau suivant offre l’emplacement GDS pour chaque cloud.
| Informatique en nuage | URL et description |
|---|---|
| Commercial | https://globaldisco.crm.dynamics.comUtilisé par les entreprises du secteur privé. Ce cloud est le cloud le plus couramment utilisé. |
| GCC | https://globaldisco.crm9.dynamics.comCloud de la communauté du secteur public. Utilisé par les employés et sous-traitants du secteur public aux États-Unis. |
| USG | https://globaldisco.crm.microsoftdynamics.usUtilisé par les employés et les sous-traitants du gouvernement fédéral des États-Unis. Également appelé GCC High. |
| DOD | https://globaldisco.crm.appsplatform.usUtilisé par les employés et les sous-traitants du ministère de la Défense des États-Unis. |
| Chine | https://globaldisco.crm.dynamics.cnUtilisés par les entreprises en Chine pour respecter les exigences de réglementation. |
Pour plus d′informations :
- Dynamics 365 US Government
- Power Platform et les applications Dynamics 365 – traités par 21Vianet en Chine
Limitations
Le service de découverte globale ne retourne pas d’informations quand :
- Le compte utilisateur est désactivé.
- Un groupe de sécurité d’instance filtre l’utilisateur.
- L’utilisateur obtient l’accès en étant administrateur délégué.
Si l’utilisateur appelant ne peut accéder à aucune instance, la réponse retourne une liste vide.
Authentification
L’utilisateur appelant doit obtenir un jeton OAuth 2.0 à partir de Microsoft Entra ID et ajouter ce jeton dans l’en-tête d’autorisation des appels d’API. Pour plus d’informations, consultez Utiliser l’authentification OAuth avec Microsoft Dataverse.
Prise en charge de CORS
Le service Discovery prend en charge la norme CORS pour les accès inter-origines. Pour plus d’informations sur la prise en charge de CORS, consultez Utiliser OAuth avec le partage de ressources Cross-Origin pour connecter une application Single-Page.
Utiliser Insomnia pour se connecter au service de découverte global
Utilisez la même approche décrite pour l’API Web Dataverse dans Use Insomnia with Dataverse Web API. Au lieu des variables d’environnement décrites dans cet article, utilisez les variables suivantes pour accéder au cloud commercial.
{
"cloudUrl": "https://globaldisco.crm.dynamics.com",
"globalDiscoUrl": "{{cloudUrl}}/api/discovery/v2.0/",
"redirecturl": "https://localhost",
"authurl": "https://login.microsoftonline.com/common/oauth2/authorize?resource={{cloudUrl}}",
"clientid": "51f81489-12ee-4a9e-aaae-a2591f45987d"
}
Sous l’onglet Autorisation , choisissez OAuth 2 et définissez ou vérifiez les valeurs suivantes :
| Champ | Valeur |
|---|---|
| TYPE D'AUTORISATION | Implicite |
| URL D’AUTORISATION | _.authurl |
| IDCLIENT | _.clientid |
| URL DE REDIRECTION | _.redirecturl |
Utilisez GET _.globalDiscoUrl comme URL de demande et sélectionnez Envoyer.
Vous pouvez désormais interroger le Global Discovery Service à l’aide d’Insomnia.
Documents de service
Pour accéder au service Global Discovery pour chaque cloud, ajoutez /api/discovery/v2.0/ à l’URL. Effectuez une GET demande sur cette URL pour afficher le document de service, qui ne contient qu’un seul EntitySet : Instances.
Ajoutez $metadata à l’URL du cloud et envoyez une requête HTTP GET pour afficher le document de service CSDL (Common Schema Definition Language). Ce document XML fournit des détails sur l’entité Instance et les clés secondaires définies pour celle-ci.
Ensemble d’entités d’instance
La table suivante décrit les propriétés de l’entité Instance depuis le document de service CDSL $metadata.
| Propriété | Type | Description |
|---|---|---|
ApiUrl |
Chaîne | L’emplacement que les applications clientes de services Web doivent utiliser. |
DatacenterId |
Chaîne | ID du centre de données où se situe l’instance. |
DatacenterName |
Chaîne | Nom du centre de données où se situe l’instance. Cette valeur est généralement nulle. |
EnvironmentId |
Chaîne | Identifiant d’environnement de l’instance. |
FriendlyName |
Chaîne | Nom pour l’instance qui s’affiche dans powerapps.com et d’autres applications clientes qui permettent de sélectionner des instances. |
Id |
Guid | ID de l’organisation pour l’environnement. |
IsUserSysAdmin |
Booléen | Indique si l’utilisateur appelant a le rôle d’administrateur système pour l’environnement. |
LastUpdated |
DateTimeOffset | Lorsque l’environnement a été mis à jour pour la dernière fois. |
OrganizationType |
Int32 | Type d’organisation. Les valeurs correspondent à OrganizationType EnumType |
Purpose |
Chaîne | Informations sur la finalité fournie lors de la création de l’environnement. |
Region |
Chaîne | Code à 2 ou 3 lettres pour la région où se trouve l’environnement. |
SchemaType |
Chaîne | Réservé exclusivement à un usage interne. |
State |
Int32 | Indique si l’organisation a la valeur 0 : activée ou 1 : désactivée. |
StatusMessage |
Int32 | Une des valeurs suivantes : 0 : InstanceLocked1 : PendingServiceInstanceMove2 : InstanceFailed3 : Provisioning 4 : InActiveOrganizationStatus5 : NewInstance6 : InstancePickerReady |
TenantId |
Guid | ID du client associé à l’instance |
TrialExpirationDate |
DateTimeOffset | La date à laquelle la période d’évaluation de l’instance expire. |
UniqueName |
Chaîne | Le nom unique de l’instance. |
UrlName |
Chaîne | Nom utilisé pour l’URL. |
Version |
Chaîne | Version actuelle de l’environnement. |
Url |
Chaîne | URL de l’application pour l’environnement. |
Vous pouvez utiliser ces noms de propriété avec le paramètre de requête $select OData pour récupérer uniquement les données dont vous avez besoin. Dans la plupart des cas, vous n’aurez besoin que des propriétés FriendlyName et ApiUrl. Par exemple :
Demande :
GET https://globaldisco.crm.dynamics.com/api/discovery/v2.0/Instances?$select=ApiUrl,FriendlyName HTTP/1.1
Authorization: Bearer <truncated for brevity>
Réponse :
HTTP/1.1 200 OK
Content-Length: 625
Content-Type: application/json; odata.metadata=minimal
odata-version: 4.0
{
"@odata.context":"https://10.0.1.76:20193/api/discovery/v2.0/$metadata#Instances(ApiUrl,FriendlyName)",
"value":[
{
"ApiUrl":"https://yourorganization.api.crm.dynamics.com",
"FriendlyName":"Your Organization"
}
]
}
Utilisez la propriété FriendlyName pour l’interface utilisateur de votre application afin que l’utilisateur reconnaisse le nom de l’environnement. Utilisez l’ApiUrl pour se connecter à Dataverse.
Le reste des propriétés est principalement destiné au filtrage.
Filtrage
Vous pouvez filtrer les instances retournées de deux façons :
- Utiliser des valeurs clés
- Utiliser les options de requête OData
$filter
Utiliser des valeurs-clés
Utilisez la valeur UniqueName ou Id pour filtrer la liste et renvoyer uniquement l’instance spécifiée.
Remarque
Contrairement à l’API web Dataverse, le service Global Discovery ne prend pas en charge la récupération d’un(e) Instance spécifique en utilisant le Id ou l’une des clés alternatives qui lui sont associées. GDS retourne toujours un tableau de valeurs.
Les deux requêtes suivantes retournent un tableau avec un seul élément :
GET https://globaldisco.crm.dynamics.com/Instances(6bcbf6bf-1f2a-4ab9-9901-2605b314d72d)?$select=ApiUrl,FriendlyName,Id,UniqueName
GET https://globaldisco.crm.dynamics.com/Instances(UniqueName='unq6bcbf6bf1f2a4ab999012605b314d')?$select=ApiUrl,FriendlyName,Id,UniqueName
Vous pouvez également utiliser l’une des autres valeurs de clé suivantes pour filtrer sur des valeurs spécifiques : Region, State, Version. Par exemple, utilisez la requête suivante pour retourner uniquement les instances où la région représente NA l’Amérique du Nord.
GET https://globaldisco.crm.dynamics.com/Instances(Region='NA')?$select=FriendlyName,Region,State,Version,ApiUrl
Utiliser les options de requête OData $filter
Vous pouvez utiliser les options de requête OData $filter avec toutes les propriétés applicables, y compris les propriétés de clé alternative.
Vous pouvez utiliser les opérateurs de comparaison, logiques et de regroupement suivants :
| Opérateur | Description | Exemple |
|---|---|---|
| Opérateurs de comparaison | ||
eq |
Égal | $filter=IsUserSysAdmin eq true |
ne |
N’est pas égal à | $filter=IsUserSysAdmin ne true |
gt |
Supérieur(e) à | $filter=TrialExpirationDate gt 2022-07-14T00:00:00Z |
ge |
Supérieur ou égal à | $filter=TrialExpirationDate ge 2022-07-14T00:00:00Z |
lt |
Inférieur à | $filter=TrialExpirationDate lt 2022-07-14T00:00:00Z |
le |
Inférieur ou égal à | $filter=TrialExpirationDate le 2022-07-14T00:00:00Z |
| Opérateurs logiques | ||
and |
logique et | $filter=TrialExpirationDate gt 2022-07-14T00:00:00Z and IsUserSysAdmin eq true |
or |
Ou logique | $filter=TrialExpirationDate gt 2022-07-14T00:00:00Z or IsUserSysAdmin eq true |
not |
Négation logique | $filter=not contains(Purpose,'test') |
| Opérateurs de groupement | ||
( ) |
Groupement de priorité | (contains(Purpose,'sample') or contains(Purpose,'test')) and TrialExpirationDate gt 2022-07-14T00:00:00Z |
Vous pouvez utiliser les fonctions de requête de chaîne suivantes :
| Fonction | Exemple |
|---|---|
contains |
$filter=contains(Purpose,'test') |
endswith |
$filter=endswith(FriendlyName,'Inc.') |
startswith |
$filter=startswith(FriendlyName,'A') |
Remarque
Contrairement à l’API web Dataverse, les chaînes de recherche du service Global Discovery sont sensibles à la casse.
Utiliser le ServiceClient Dataverse
Pour .NET applications, utilisez Dataverse.Client.ServiceClient.Méthode DiscoverOnlineOrganizationsAsync pour appeler global Discovery Services.
// Set up user credentials
var creds = new System.ServiceModel.Description.ClientCredentials();
creds.UserName.UserName = userName;
creds.UserName.Password = password;
//Call DiscoverOnlineOrganizationsAsync
DiscoverOrganizationsResult organizationsResult = await ServiceClient.DiscoverOnlineOrganizationsAsync(
discoveryServiceUri: new Uri($"{cloudRegionUrl}/api/discovery/v2.0/Instances"),
clientCredentials: creds,
clientId: clientId,
redirectUri: new Uri(redirectUrl),
isOnPrem: false,
authority: "https://login.microsoftonline.com/organizations/",
promptBehavior: PromptBehavior.Auto);
return organizationsResult;
Bien que la DiscoverOnlineOrganizationsAsync méthode utilise le même point de terminaison OData et active qu’elle soit passée dans le discoveryServiceUri paramètre, elle ne retourne pas de données dans la forme d’une instance. Elle retourne des données sous forme de classe DiscoverOrganizationsResult qui inclut une propriété OrganizationDetailCollection qui contient une collection d’instances de classe OrganizationDetail . Cette classe contient les mêmes informations que les types Instance renvoyés par le service OData.
Remarque
Bien que le paramètre DiscoverOnlineOrganizationsAsync.discoveryServiceUri accepte l’URL du service Global Discovery Service, la méthode ignore toutes les options de requête $select ou $filter. Le paramètre DiscoverOnlineOrganizationsAsync.discoveryServiceUri est facultatif. Si vous ne le fournissez pas, la méthode est par défaut dans le cloud commercial.
Utiliser CrmServiceClient
Pour les applications .NET Framework, continuez à utiliser la méthode CrmServiceClient.DiscoverGlobalOrganizations pour appeler le service Global Discovery.
// Set up user credentials
var creds = new System.ServiceModel.Description.ClientCredentials();
creds.UserName.UserName = userName;
creds.UserName.Password = password;
// Call to get organizations from global discovery
var organizations = CrmServiceClient.DiscoverGlobalOrganizations(
discoveryServiceUri:new Uri($"{cloudRegionUrl}/api/discovery/v2.0/Instances"),
clientCredentials: creds,
user: null,
clientId: clientId,
redirectUri: new Uri(redirectUrl),
tokenCachePath: "",
isOnPrem: false,
authority: string.Empty,
promptBehavior: PromptBehavior.Auto);
return organizations.ToList();
Comme la ServiceClient.DiscoverOnlineOrganizationsAsync méthode, la CrmServiceClient.DiscoverGlobalOrganizations méthode ne retourne pas non plus de données en tant qu’instance. Elle retourne un OrganizationDetailCollection qui contient une collection d’instances de classe OrganizationDetail . Cette collection contient les mêmes informations que les Instance types retournés par le service OData.
Voir aussi
Exemple : Service de découverte global (C #)
Exemple : Accéder au service de découverte avec CrmServiceClient
Exemple : Blazor WebAssembly avec service de découverte global