Considérations sur la sécurité pour LightSwitch
La plupart des applications d'entreprise ont des conditions de sécurité.Par exemple, vous pouvez limiter les employés qui ont accès à une application, aux écrans d'une application, et les utilisateurs qui peuvent afficher ou mettre à jour certaines données.LightSwitch fournit un modèle d'authentification intégrée et d'autorisation qui peut aider à implémenter la sécurité dans votre application.
Authentification et autorisation
L'authentification est un mécanisme pour vérifier l'identité d'un utilisateur.Par exemple, lorsque vous ouvrez une session sur Windows, votre nom d'utilisateur et votre mot de passe vous authentifient.L'autorisation est un mécanisme pour définir ce que vous pouvez ou ne pouvez pas faire.Par exemple, un employé peut être en mesure de consulter ses propres informations salariales, mais il ne sera probablement pas autorisé à s'accorder une augmentation de salaire.
Dans LightSwitch, l'authentification est contrôlée par un écran d'ouverture de session utilisé pour identifier l'utilisateur.Une fois qu'un utilisateur est authentifié, les rôles et les autorisations déterminent ce que cet utilisateur est autorisé à faire dans l'application.
Activation de l'authentification
L'authentification dans LightSwitch est désactivée par défaut; vous pouvez l'activer via l'onglet Contrôle d'accès du Concepteur d'application.L'authentification Windows et l'authentification par formulaire sont prises en charge.L'authentification Windows utilise les informations d'ouverture de session Windows d'un utilisateur pour l'identifier.Avec l'authentification par formulaire, un administrateur d'application crée les identifiants et mots de passe des utilisateurs.
Lorsque vous choisissez l'authentification Windows, vous pouvez également choisir si des utilisateurs spécifiques ou tous les utilisateurs Windows ont accès à l'application.Si vous choisissez tous les utilisateurs, un utilisateur ayant un ID d'ouverture de session Windows valide sera en mesure d'accéder à l'application, mais il ne disposera que des autorisations minimales.Vous pouvez toujours assigner des rôles et des autorisations à des utilisateurs individuels, le cas échéant.
Autorisations, utilisateurs et rôles
L'autorisation dans LightSwitch s'effectue en définissant des autorisations, des utilisateurs et des rôles.Les autorisations sont créées par le développeur sous l'onglet Contrôle d'accès du Concepteur d'application et l'effet de ces autorisations est conçu par l'écriture de code.Par exemple, vous pouvez créer une autorisation ViewSales pour autoriser les utilisateurs à consulter un écran Ventes.Dans la méthode CanView pour l'écran, vous pouvez écrire le code qui permet uniquement à l'écran d'être affiché si l'utilisateur actuel a obtenu l'autorisation de le consulter.En plus de définir des autorisations pour consulter des écrans, vous pouvez également créer des autorisations pour restreindre l'accès aux contrôles individuels sur un écran, aux entités de données ou champs d'une entité, aux requêtes, etc.
Les rôles sont créés par l'administrateur de l'application une fois l'application déployée.Un rôle contient une ou plusieurs autorisations.Par exemple, l'administrateur peut définir un rôle Sales et assigner l'autorisation ViewSales à ce rôle.L'administrateur de l'application ajoute également des utilisateurs et leur assigne des rôles.Par exemple, si Bob est dans le service des ventes, l'administrateur peut ajouter Bob comme utilisateur en ajoutant ses informations d'authentification, puis lui assigner le rôle Sales.Lorsque l'application s'exécute, le code évalue les informations utilisateur de Bob, voit qu'il est membre du rôle Sales, et affiche l'élément de menu pour afficher l'écran Ventes.
Chaque application a une autorisation par défaut, l'autorisation SecurityAdministration.Cette autorisation accorde l'accès aux écrans d'administration Utilisateurs et Rôles utilisés par l'administrateur de l'application.Lorsque vous publiez une application pour la première fois, vous pouvez fournir les informations d'authentification de la personne qui sera l'administrateur de l'application par défaut.Lorsque cette personne exécutera l'application pour la première fois, elle sera en mesure de consulter les écrans Utilisateurs et Rôles et de définir des utilisateurs et des rôles.
Test des autorisations
Lors du test d'une application, vous souhaiterez vous assurer que toutes les autorisations que vous avez définies fonctionnent comme prévu.Vous pouvez le faire en activant les autorisations de débogage sous l'onglet Contrôle d'accès du Concepteur d'application.Par exemple, si vous avez défini une autorisation ViewSales, vous pouvez activez la case à cocher Accordée pour le débogage pour cette autorisation.Lorsque vous déboguez l'application, vous pouvez vérifier que vous pouvez consulter l'écran Ventes. Vous êtes un utilisateur qui a l'autorisation ViewSales.Vous pouvez définir n'importe quelle combinaison d'autorisations pour émuler les autorisations qui peuvent être assignées à un rôle donné.
[!REMARQUE]
Si vous activez l'autorisation SecurityAdministration pour le débogage, vous pouvez consulter les écrans d'administration Utilisateurs et Rôles pendant que vous effectuez le débogage.Bien que vous puissiez entrer des utilisateurs et des rôles dans ces écrans, les utilisateurs et rôles ne seront pas déployés avec l'application et ne peuvent pas être utilisés pour les autorisations de débogage.
Connexions sécurisées
Pour les applications clientes 3-tier basées sur LightSwitch et hébergées sur un serveur exécutant Internet Information Services (IIS), la communication entre l'application et le serveur utilise le protocole HTTP au lieu du protocole HTTPS, qui est plus sécurisé.Cette condition peut laisser votre application vulnérable aux intrus.Le chiffrement SSL aide à protéger les informations confidentielles ou personnelles envoyées entre une application cliente et un serveur.Lorsque SSL est activé, les applications clientes distantes accèdent au serveur à l'aide d'URLs commençant par https://.Nous vous recommandons de configurer SSL pour tout site qui héberge une application basée sur LightSwitch.Pour plus d'informations, consultez Configuration de Secure Sockets Layer (SSL) dans IIS 7.
Pour activer SSL
Dans la barre de menus, sélectionnez Build, Publier.
Dans l'Assistant de publiation d'application, choisissez l'onglet Paramètres de sécurité.
Dans la section Requièrt une connexion sécurisée (HTTPS), sélectionnez la bouton d'option On.
[!REMARQUE]
Lorsque ce paramètre est activé, le site Web doit être correctement configuré pour utiliser HTTPS.
Pour les applications 3-tier utilisant SQL Server pour la couche de données, la communication entre IIS et la base de données est également potentiellement vulnérable.Nous vous recommandons de configurer SSL pour toute base de données accédée par une application basée sur LightSwitch.Pour plus d'informations, consultez Chiffrement des connexions à SQL Server.
Sécurité et contrôle de version
Lorsque vous travaillez avec un projet LightSwitch sous contrôle de version, une chaîne de connexion dans le fichier web.config peut contenir le nom d'utilisateur et le mot de passe du développeur le plus récent du projet.Cette information serait ensuite disponible pour le prochain développeur qui consultera le projet.
Ce problème ne s'applique pas à une application publiée; les informations de la chaîne de connexion de l'Assistant de publication ne sont pas enregistrées dans le contrôle de version.L'utilisation d'une base de données de test au lieu d'une base de données de production au moment du design vous permettra d'empêcher les utilisateurs non-autorisés d'accéder aux données de production.
Considérations supplémentaires sur la sécurité
Outre l'authentification, vous devez prendre en compte d'autres aspects de la sécurité.Même si votre application ne traite pas de données métier sensibles, d'autres informations telles que les mots de passe peuvent être exposées.
Vous devez aussi tenir compte de la sécurité lorsque vous écrivez du code qui accède à un serveur.Par exemple, vous pourriez écrire du code de requête pour filtrer des données d'employé afin que les employés ne puissent consulter que leurs propres données:
Private Partial Sub Employees_All_PreprocessQuery(ByRef query As IQueryable(Of Application43.Employee))
query = From item In query Where item.EmpName = Me.Application.User.Nameitem
End Sub
partial void Employees_All_PreprocessQuery(ref IQueryable<Application43.Employee> query)
{
query = from item in query where item.EmpName == this.Application.User.Name select item;
}
Bien qu'efficace pour afficher les données, si l'utilisateur tente de mettre à jour ou de supprimer des données et qu'une exception d'accès concurrentiel se produit, les données des autres employés pourraient être exposées dans les informations sur l'erreur retournées à partir du serveur.Pour éviter ceci, vous souhaiteriez écrire du code supplémentaire dans les méthodes Updating et Deleting afin de garantir que l'employé ne peut consulter que ses propres données:
Dim user As String = Me.Application.User.Name
If Me.DataWorkspace.ApplicationData.Employees.Where(Function(e) e.Id = entity.Id AndAlso e.EmpName = user).Execute().Count() = 0 Then
Throw New DataServiceOperationException("Permission error: Cannot modify a record you don't have access to.")
End If
string user = this.Application.User.Name;
if (this.DataWorkspace.ApplicationData.Employees.Where(e => e.Id == entity.Id && e.EmpName == user).Execute().Count() == 0)
{
throw new DataServiceOperationException("Permission error: Cannot modify a record you don't have access to.");
}
Pour en savoir plus sur les méthodes de codage sécurisées en général, consultez Création d'applications sécurisées.
Voir aussi
Tâches
Authentification et autorisation LightSwitch
Autres ressources
Déploiement : distribution et mise à jour de votre application