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.
L'accès anonyme aux données permet à une application Fabric d'exposer certaines opérations de données à des utilisateurs non connectés. Vous contrôlez cet accès au niveau du locataire Fabric et dans chaque modèle de données. L’accès anonyme est une option d’autorisation, pas un remplacement de l’authentification. La même application peut fournir un accès public à certaines entités tout en exigeant que les utilisateurs se connectent pour accéder à d’autres entités ou effectuer certaines opérations.
Important
Toute personne pouvant accéder à l’URL de l’application peut utiliser les opérations attribuées au rôle anonymous. Ne divulguez pas de données personnelles, confidentielles, financières ou internes dans le cadre de ce rôle.
Cas d’utilisation
Envisagez l’accès aux données de manière anonyme lorsqu’une application doit fournir des fonctionnalités limitées sans obligation de connexion.
| Scénario | Accès exemple | Étendue recommandée |
|---|---|---|
| Données de référence publiques | Consultez les catalogues de produits, les plannings ou les ensembles de données publics | read |
| Collecte de commentaires | Soumettez des commentaires ou des réponses à un sondage | create |
L’accès anonyme n’est pas approprié lorsqu’une application doit identifier l’utilisateur, faire respecter la propriété ou fournir un accès sur la base de revendications d’identité. Utilisez des rôles authentifiés pour ces scénarios.
Comment fonctionne l’accès anonyme
L’accès anonyme aux données utilise des contrôles indépendants :
- Paramètre du locataire : Un administrateur du locataire Fabric accorde un accès anonyme aux données à l’organisation ou à certains groupes de sécurité.
-
Rôle dans le modèle de données : Une entité utilise ce
anonymousrôle pour définir les opérations que les utilisateurs non authentifiés peuvent effectuer.
Le paramètre de locataire constitue la frontière à l’échelle de l’organisation. Le paramètre de l’application permet aux requêtes anonymes d’atteindre le service de données de l’application. Le rôle d’entité détermine à quelles données et opérations ces requêtes peuvent accéder. N’activer qu’un ou deux de ces contrôles n’accorde pas un accès anonyme.
Activez le paramètre du tenant
Un administrateur de locataire Fabric doit activer l’accès anonyme aux données avant que les développeurs d’applications puissent utiliser Fabric. Le paramètre est désactivé par défaut.
Connectez-vous au portail d’administration Fabric.
Sélectionnez Paramètres du client.
Dans les applications Fabric (aperçu), trouvez Accès anonyme aux données.
Définissez l'interrupteur sur Activé.
Appliquez ce paramètre à l’ensemble de l’organisation ou à des groupes de sécurité spécifiques.
Cliquez sur Appliquer.
Les changements peuvent prendre quelques minutes avant de faire effet. Lorsque vous limitez ce paramètre aux groupes de sécurité, vérifiez que le développeur ou le propriétaire de l’application est inclus dans un groupe autorisé.
Définir l’accès anonyme dans un modèle de données
Utilisez le @role décorateur sur une entité et spécifiez anonymous comme nom du rôle. Le second argument définit les opérations de données autorisées : create, read, update, ou delete.
Parameters
| Paramètre | Type | Description |
|---|---|---|
roleName |
string |
Le nom du rôle, tel que authenticated ou un rôle d’application personnalisé |
actions |
string \| string[] |
Action ou tableau unique : create, , readupdate, deleteou * pour tous |
options |
object |
Objet facultatif avec check, includeet exclude propriétés |
L’exemple suivant permet aux utilisateurs non authentifiés de lire les annonces publiques :
Ajoutez ces entités au service de données configuré dans rayfin/rayfin.yml. Dans la Universal App par défaut, activez les données et utilisez packages/data/src/, avec des contrats associés dans packages/shared/src/. Un modèle plat peut être utilisé rayfin/data/ à la place. Consultez Définir des modèles de données.
import { entity, role, uuid, text } from '@microsoft/rayfin-core';
@entity()
@role('anonymous', 'read')
export class Announcement {
@uuid() id!: string;
@text({ max: 200 }) title!: string;
@text({ max: 4000 }) content!: string;
}
Le anonymous rôle n’utilise pas les revendications d’identité car aucune identité connectée n’est disponible. Définissez l’ensemble d’opérations le plus restreint qui prend en charge votre scénario.
Permettre aux utilisateurs de soumettre des données
Pour un formulaire de commentaires, accordez create l’accès sans accorder read, update ou delete l’accès :
import { entity, role, uuid, text } from '@microsoft/rayfin-core';
@entity()
@role('anonymous', 'create')
export class Feedback {
@uuid() id!: string;
@text({ max: 2000 }) comment!: string;
}
Ce modèle permet aux utilisateurs de soumettre des retours, mais ne leur permet pas de consulter ou de modifier les entrées soumises.
Autoriser plusieurs opérations
Passer un tableau lorsqu’un scénario nécessite plus d’une opération :
import { boolean, entity, role, text, uuid } from '@microsoft/rayfin-core';
@entity()
@role('anonymous', ['create', 'read', 'update'])
export class SharedTodo {
@uuid() id!: string;
@text({ max: 200 }) title!: string;
@boolean({ default: false }) completed!: boolean;
}
Toute personne ayant accès à cette application peut créer, consulter et mettre à jour toutes les tâches partagées. Ils ne peuvent pas supprimer les tâches car delete n’est pas inclus. Utilisez des permissions larges comme celles-ci uniquement pour les données publiques ou temporaires où les utilisateurs sont censés partager l’accès.
Combinez des rôles anonymes et authentifiés
Appliquer les deux rôles à une entité lorsque les utilisateurs publics et connectés nécessitent des permissions différentes. Par exemple, n’importe qui peut lire un article de blog, mais seul son propriétaire connecté peut le modifier :
import { entity, role, uuid, text } from '@microsoft/rayfin-core';
@entity()
@role('anonymous', 'read')
@role('authenticated', ['create', 'update', 'delete'], {
policy: (claims, item) => claims.sub.eq(item.createdBy),
})
export class BlogPost {
@uuid() id!: string;
@text({ max: 200 }) title!: string;
@text({ max: 4000 }) content!: string;
@text({ max: 255 }) createdBy!: string;
}
Le rôle anonyme permet un accès en lecture public sans évaluer les informations d’identité. Le rôle authentifié utilise les déclarations de l’utilisateur connecté pour restreindre les modifications apportées au contenu que l’utilisateur possède.
Conseils de sécurité
- Accordez l’accès minimum requis. Préférez
readseul oucreateseul. Accordezupdateoudeleteseulement lorsque le workflow public l’exige. - Limitez les champs exposés. Utilisez les options
includeouexcludepour empêcher l’accès à des champs dont les utilisateurs anonymes n’ont pas besoin. Pour plus d’informations, voir Définir les permissions de données. - Ne comptez pas sur l’interface de l’application comme protection. Les permissions doivent être définies sur le modèle de données car les appelants peuvent envoyer des requêtes sans utiliser votre frontend.
- Tenez compte des données d'entrée non fiables. Valider les données soumises et concevoir des opérations d’écriture publiques contre le spam, l’automatisation et le trafic inattendu.
- Tester les opérations refusées. Confirmez que les opérations exclues du rôle sont rejetées pour les utilisateurs sans session.
Désactiver l’accès anonyme
Pour supprimer l’accès public d’une application :
- Supprimez le rôle
anonymousde chaque modèle de données. - Redéployez l’application en lançant
npx rayfin up.
Un administrateur locataire peut également désactiver le paramètre locataire pour bloquer l’accès anonyme aux données de toutes les applications au sein d’un locataire et limiter l’accès à certains groupes de sécurité.