Configuration de la connexion Dataverse
Votre portail communique avec Dataverse en tant qu’application à part entière, et non en tant que visiteur qui le consulte. Cela comporte deux éléments : une inscription dans l’identifiant Microsoft Entra qui possède les identifiants, et un utilisateur applicatif dans votre environnement Dataverse qui donne à ces identifiants une identité et un rôle de sécurité. Cette page parcourt les deux, ainsi que l’accès dont le portail a réellement besoin.
Ce n’est pas l’application de connexion
Cette inscription est l’identité de service propre au portail — elle lit et écrit les données au nom du portail, et ses identifiants vont sous
D365:ClientId/D365:ClientSecret. Un second enregistrement séparé gère la connexion des utilisateurs chez Microsoft. Gardez-les séparés : celui-ci ne nécessite ni URI de redirection ni permissions déléguées, mais il détient bien plus de pouvoir dans votre environnement. Voir Configuration de connexion Entra ID
1. Enregistrer la demande
Créez l’enregistrement dans le centre d’administration Microsoft Entra, dans le locataire qui possède votre environnement Dataverse.
- Parcourez Entrée ID > Inscriptions à l’application et sélectionnez Nouvelle inscription.
- Saisissez un Nom qui identifie le portail et l’environnement, par
Contoso Portal — Dataverse (Production)exemple. Personne ne voit cela sur un écran de consentement, donc privilégiez la clarté pour ceux qui l’auditeront plus tard. - Dans la section Types de comptes supportés, choisissez Tenant unique uniquement. Cette identité ne quitte jamais votre organisation.
- Laissez l’URI de redirection vide. Aucun utilisateur n’est jamais redirigé ici — le portail s’authentifie avec le flux d’identifiants client, machine à machine, sans navigateur impliqué.
- Sélectionnez Inscrire.
- Sur la page Aperçu , copiez l’ID de l’application (client). Cette valeur devient
D365:ClientId, et vous en avez besoin à nouveau à l’étape 4 pour créer l’utilisateur de l’application.
2. Créer un secret client
Le secret est la seule accréditation du portail, alors considérez-le comme la clé des données de votre environnement.
- Ouvrez Certificats & secrets sous Gérer et sélectionnez l’onglet Secrets du client.
- Sélectionnez Nouveau secret client, décrivez-le par environnement (par exemple
portal-production), puis choisissez une date d’expiration. - Copiez immédiatement la colonne Valeur — pas l’ID Secret. Elle n’est affichée qu’une seule fois, et elle devient
D365:ClientSecret.
Important
Lorsque le secret expire, le portail cesse complètement d’atteindre Dataverse — pas seulement pour une fonctionnalité, mais pour chaque requête — alors inscrivez la date d’expiration quelque part où vous la verrez. Pour la production, une certification de certificat évite la falaise d’expiration et
AuthenticationType.Certificateen accepte une à la place du secret.
3. Autorisations API : Aucune requise
Cette étape est volontairement vide, ce qui surprend les gens. Beaucoup d’anciennes directives vous conseillent d’ajouter le CRM Dynamics → user_impersonation autorisation déléguée. Cette autorisation concerne les applications agissant au nom d’un utilisateur connecté. Le portail ne fait pas cela — il s’authentifie sous son propre nom, et son accès provient entièrement de l’utilisateur Dataverse que vous créez à l’étape suivante.
Note
Les directives serveur à serveur de Microsoft disent la même chose : lorsque vous vous connectez en tant qu’application, vous n’accordez pas Access Dynamics 365 en tant qu’utilisateurs de l’organisation, car l’application est liée à un compte utilisateur spécifique à la place. L’ajouter ne casse rien, mais cela accorde une fonctionnalité que le portail n’exerce jamais — laissez-la désactivée.
4. Créer l’utilisateur de l’application dans Dataverse
L’enregistrement de l’application seul ne peut pas toucher aux données. Dataverse a besoin d’un enregistrement utilisateur lié à celle-ci, ce qui transforme l’identifiant client en une identité reconnue par votre environnement.
- Connectez-vous au centre d’administration de Power Platform.
- Sélectionnez Gérer dans le panneau de navigation, puis Environnements, puis votre environnement.
- Sélectionnez Paramètres > Utilisateurs + permissions > Utilisateurs de l’application.
- Sélectionner + Nouvel utilisateur de l’application.
- Sélectionnez + Ajouter une application et trouvez votre inscription par nom ou par identifiant client à l’étape 1, puis sélectionnez Ajouter. Seules les inscriptions à l’application Entra apparaissent dans cette liste — les applications d’entreprise ne le font pas.
- Choisissez une unité métier. L’unité métier racine est la réponse habituelle ; une unité enfant réduit ce que le portail peut atteindre avant même que les rôles de sécurité ne s’appliquent.
- Sélectionnez l’icône d’édition à côté de Rôles de sécurité et attribuez le rôle que vous avez créé pour le portail — voyez l’étape suivante pour ce qu’il doit contenir.
- Sélectionne Créer.
Conseil
Un utilisateur d’application ne consomme aucune licence payante, et vous ne pouvez en avoir qu’une par enregistrement d’une application Entra par environnement. Utilisez une inscription séparée pour chaque environnement afin que la révocation de l’accès au développement n’affecte jamais la production.
5. Confier à l’utilisateur de l’application un rôle de sécurité
Créez un rôle de sécurité personnalisé plutôt que de réutiliser un rôle intégré, afin que l’accès au portail soit visible et consultable. Ce dont le rôle a besoin dépend des fonctionnalités du cadre que vous utilisez :
| Ce que fait le portail | Accéder aux besoins du poste |
|---|---|
| Fournit les données de votre portail | Créez, lisez, écrivez et supprimez sur chaque table exposée par votre portail, à l’échelle que vous souhaitez atteindre par les visiteurs. C’est la majeure partie du rôle, et c’est entièrement spécifique à votre application. |
| Inscriptions et connexions des utilisateurs du portail | Créer, lire et écrire sur contact, plus Créer, lire, écrire et supprimer sur adx_externalidentity, qui stocke le lien entre un utilisateur du portail et une connexion externe. |
| Lie les grilles aux vues Dataverse et forme les valeurs | Lisez la suite savedquery pour connaître les vues auxquelles vos grilles se lient, et lisez la suite organization, usersettings ainsi timezonedefinition que les dates, les chiffres et le format de monnaie correctement. |
| Envoie un email de confirmation et de réinitialisation du mot de passe | Créer, lire et écrire sur email, créer sur activitymimeattachment, plus les privilèges Envoyer un e-mail et envoyer un e-mail comme un autre utilisateur . L’adresse de l’expéditeur que vous configurez est résolue en queue un enregistrement ou systemuser , donc le rôle a aussi besoin de lire sur ceux-ci — c’est pourquoi envoyer comme cette adresse compte comme envoyer comme un autre utilisateur. |
| Valide la licence du site web | Permission d’exécuter l’action ppp_ProWebsiteLicenseCheck et de lire les enregistrements du site web du portail qui sont livrés dans la solution gérée. Sans cela, tous les points de terminaison sous licence échouent. |
| Sécurité dataverse-native (optionnelle) | Seulement si vous activez le modèle de sécurité de prévisualisation : Créer et lire la suite systemuser, lire la suite businessunit, créer et lire la suite powerpagesusermapping, lire la suite powerpagesite et mspp_webrole, et la loi sur le privilège au nom d’un autre utilisateur afin que le portail puisse se faire passer pour chaque utilisateur provisionné. |
Important
Résistez à la tentation d’assigner un administrateur système et passez à autre chose. Le portail est orienté vers Internet, et c’est cette certification qui détermine ce qu’un attaquant peut atteindre si le secret fuite. Cela vaut l’après-midi nécessaire pour construire un véritable rôle — et un environnement de développement est l’endroit idéal pour découvrir ce que vous avez manqué.
6. Stocker les paramètres de connexion
Le portail les lit depuis la configuration sous la D365 section. Gardez-les dans les secrets utilisateur pendant le développement afin qu’elles n’atteignent jamais le contrôle de version :
{
"D365": {
"Url": "https://yourorg.crm.dynamics.com",
"ClientId": "<application (client) id>",
"ClientSecret": "<client secret value>",
"EmailSenderEmailAddress": "portal@yourcompany.com"
}
}
EmailSenderEmailAddress est l’adresse depuis laquelle l’email sortant du portail est envoyé. Il doit correspondre à un queue ou à un activé systemuser dans l’environnement — une file d’attente est le choix habituel, car elle ne lie pas le courrier du portail à une personne qui pourrait partir plus tard.
Conseil
Dans les environnements hébergés, fournir les mêmes clés que les variables d’environnement ou depuis un magasin secret, en utilisant un double soulignement à la place du deux-points —
D365__ClientId,D365__Secret— car le séparateur des deux-points n’est pas portable entre plateformes.
7. Câbler la connexion
Le projet serveur se configure ConnectionOptions lors de l’enregistrement du framework :
builder.Services.AddPowerPortalsProWebServer()
.Configure<ConnectionOptions>(options =>
{
options.AuthenticationType = AuthenticationType.ClientSecret;
options.ServiceUri = new Uri(builder.Configuration.GetRequiredValue("D365:Url"));
options.ClientId = builder.Configuration.GetRequiredValue("D365:ClientId");
options.ClientSecret = builder.Configuration.GetRequiredValue("D365:ClientSecret");
});
Le modèle de projet écrit cela pour vous, donc dans un projet généré, il n’y a rien à ajouter ici — fournissez les trois valeurs de configuration et la connexion fonctionne. Ouvrez le portail et parcourez n’importe quelle page appuyée par les données Dataverse pour le confirmer.
Dépannage
- L’appelant n’est pas un utilisateur valide de Dataverse, ou l’authentification échoue complètement. L’enregistrement de l’application existe mais aucun utilisateur d’application n’y est lié dans cet environnement. Les utilisateurs d’application sont par environnement — en créer un en développement ne fait rien pour la production.
- L’authentification échoue avec un secret client invalide. Habituellement, l’ID du secret a été copié à la place de la valeur du secret, ou le secret a expiré. Créez-en un nouveau et mettez à jour la configuration.
- Un principal n’a pas de privilège. Le rôle de l’utilisateur de l’application n’a pas accès à la table nommée dans l’erreur. Dataverse met en cache les privilèges par nœud serveur, donc laisser une minute ou deux après avoir changé un rôle avant de conclure le changement n’a pas aidé.
- Chaque endpoint de données renvoie 402. La vérification des licences du site web échoue. Confirmez que la solution gérée est installée, qu’un enregistrement du site web portail contient votre clé de licence, et que le rôle de l’utilisateur de l’application peut s’exécuter
ppp_ProWebsiteLicenseCheck. - L’email échoue avec « Impossible de trouver un expéditeur avec l’adresse email ».
EmailSenderEmailAddressNe correspond à aucun utilisateur de file d’attente ou d’utilisateur système activé dans l’environnement.
