Fonctionnalités de sécurité de Live ShareSecurity features of Live Share

Les sessions de collaboration dans Visual Studio Live Share sont puissantes en ce qu’elles permettent à un nombre quelconque de personnes de rejoindre une session et de modifier, déboguer et bien plus encore.Collaboration sessions in Visual Studio Live Share are powerful in that they allow any number of people to join in a session and collaboratively edit, debug and more. Toutefois, étant donné ce niveau d’accès, vous serez sans aucun doute intéressé par les fonctionnalités de sécurité que Live Share fournit.However, given this level of access, you undoubtedly will be interested in the security features Live Share provides. Dans cet article, nous allons fournir des recommandations et des options pour sécuriser votre environnement en fonction des besoins.In this article, we'll provide some recommendations and options for securing your environment as needed.

Comme pour n’importe quel outil de collaboration, n’oubliez pas que vous ne devez partager votre code, votre contenu et vos applications qu’avec des personnes dignes de confiance.As with any collaboration tool, remember that you should only share your code, content, and applications with people you trust.

ConnectivitéConnectivity

Lors du lancement d’une session entre homologues, Live Share tente d’établir une connexion d’égal à égal, et seulement si cela n’est pas possible (par exemple, en raison des pare-feu/NAT), fait appel à l’utilisation d’un relais Cloud.When initiating a session between peers, Live Share attempts to establish a peer-to-peer connection, and only if that isn't possible (e.g. due to firewalls/NATs), does it fall back to using a cloud relay. Toutefois, dans les deux types de connexion (P2P ou relais), toutes les données transmises entre homologues sont chiffrées de bout en bout à l’aide du protocole SSH.However, in both connection types (P2P or relay), all data transmitted between peers is end-to-end encrypted using the SSH protocol. Dans le cas d’une connexion de relais, le chiffrement SSH est superposé sur les WebSockets chiffrés par TLS.In the case of a relay connection, the SSH encryption is layered on top of TLS-encrypted WebSockets. Cela signifie que Live Share ne dépend pas du service Cloud Relay pour la sécurité.This means that Live Share doesn't depend on the cloud relay service for security. Même si le relais a été compromis, il n’a pas pu déchiffrer les communications Live Share.Even if the relay was compromised, it could not decrypt any of the Live Share communication.

Le rôle du service Live Share est limité à l’authentification utilisateur et à la découverte de session.The role of the Live Share service is limited to user authentication and session discovery. Le service lui-même ne stocke pas ou n’a jamais accès au contenu d’une session.The service itself does not store or ever have access any of the content of a session. Tout le contenu utilisateur de Live Share est transmis via la session SSH.All user content in Live Share is transmitted over the SSH session. Cela comprend le code, les terminaux, les serveurs partagés et toutes les autres fonctionnalités de collaboration fournies par Live Share ou les extensions qui s’y appuient.That includes code, terminals, shared servers, and any other collaboration features provided by Live Share or extensions that build on it.

Pour en savoir plus sur la modification de ces comportements et des exigences de connectivité de Live Share, consultez la page Configuration requise pour la connectivité pour Live share .To find out more about altering these behaviors and Live Share's connectivity requirements, see connectivity requirements for Live Share.

Chiffrement câbleWire Encryption

Le protocole SSH utilise une clé Diffie-Hellman-Exchange pour établir un secret partagé pour la session et dérive de cette clé pour le chiffrement symétrique AES.The SSH protocol uses a Diffie-Hellman key-exchange to establish a shared secret for the session, and derives from that a key for AES symmetric encryption. La clé de chiffrement est régulièrement pivotée tout au long de la durée de la session.The encryption key is rotated periodically throughout the duration of the session. La clé secrète de la session partagée et toutes les clés de chiffrement sont uniquement conservées en mémoire par les deux côtés et ne sont valides que pendant la durée de la session.The shared session secret and all encryption keys are only maintained in-memory by both sides, and are only valid for the duration of the session. Elles ne sont jamais écrites sur le disque ou envoyées à un service (y compris Live Share).They are never written to disk or sent to any service (including Live Share).

Authentification d’homologuePeer Authentication

La session SSH est également authentifiée de manière bidirectionnelle.The SSH session is also two-way authenticated. L’hôte (rôle de serveur SSH) utilise l’authentification par clé publique/privée, comme c’est le cas pour le protocole SSH.The host (SSH server role) uses public/private key authentication as is standard for the SSH protocol. Lorsqu’un hôte partage une session de Live Share, il génère une paire de clés publique/privée RSA unique pour la session.When a host shares a Live Share session, it generates a unique RSA public/private key-pair for the session. La clé privée de l’hôte est conservée uniquement en mémoire dans le processus hôte ; elle n’est jamais écrite sur le disque ou envoyée à un service, y compris le service Live Share.The host private key is kept only in memory in the host process; it is never written to disk or sent to any service including the Live Share service. La clé publique de l’ordinateur hôte est publiée dans le service Live Share avec les informations de connexion de session (point de terminaison d’adresse IP et/ou de relais) auxquelles les invités peuvent accéder via le lien d’invitation.The host public key is published to the Live Share service along with the session connection information (IP address and/or relay endpoint) where guests can access it via the invitation link. Lorsqu’un invité se connecte à la session SSH de l’hôte, ce dernier utilise le protocole d’authentification de l’hôte SSH pour vérifier que l’hôte contient la clé privée correspondant à la clé publique publiée (sans que l’invité ait réellement à voir la clé privée).When a guest connects to the host's SSH session, the guest uses the SSH host authentication protocol to validate that the host holds the private key corresponding to the published public key (without the guest actually getting to see the private key).

L’invité utilise un jeton Live Share pour s’authentifier auprès de l’hôte.The guest uses a Live Share token to authenticate itself with the host. Le jeton est un jeton JWT signé émis par le service Live Share qui comprend les revendications relatives à l’identité de l’utilisateur (obtenues via MSA, AAD ou la connexion GitHub).The token is a signed JWT issued by the Live Share service that includes claims about the user identity (obtained via MSA, AAD, or GitHub sign-in). Le jeton a également des revendications qui indiquent que l’invité est autorisé à accéder à cette session de Live Share spécifique (parce qu’il avait le lien d’invitation et/ou qu’il a été spécifiquement invité par l’hôte).The token also has claims that indicate the guest is allowed to access that specific Live Share session (because they had the invitation link and/or they were specifically invited by the host). L’hôte valide ce jeton et vérifie les revendications (et selon les options peuvent inviter l’utilisateur hôte) avant d’autoriser l’invité à rejoindre la session.The host validates that token and checks the claims (and depending on options may prompt the host user) before allowing the guest to join the session.

Invitations et accès à la jointureInvitations and join access

Chaque fois que vous démarrez une nouvelle session de collaboration, Live Share génère un nouvel identificateur unique qui est placé dans le lien d’invitation.Each time you start a new collaboration session, Live Share generates a new unique identifier that is placed in the invitation link. Ces liens fournissent une fondation solide et sécurisée pour inviter les personnes auxquelles vous faites confiance, car l’identificateur dans le lien est « non devinable » et n’est valide que pour la durée d’une seule session de collaboration.These links provide a solid, secure foundation to invite those you trust since the identifier in the link is "non-guessable" and is only valid for the duration of a single collaboration session.

Suppression d’un invité inattenduRemoving an unexpected guest

En tant qu’hôte, vous êtes automatiquement averti chaque fois qu’un invité rejoint la session de collaboration.As a host, you are automatically notified whenever a guest joins the collaboration session.

Visual Studio Code join notification Visual Studio join notification

Mieux encore, la notification vous donne la possibilité de supprimer un invité qui a rejoint si, pour une raison quelconque, vous ne le connaissez pas.Better still, the notification gives you the ability to remove a guest that has joined if for some reason you do not know them. (Par exemple, si vous avez accidentellement publié votre lien sur un système de conversation à l’entreprise et qu’un employé aléatoire est joint.) Cliquez simplement sur le bouton « supprimer » dans la notification qui s’affiche et qui seront éjectés de la session de collaboration.(For example, if you accidentally posted your link on a company-wide chat system and a random employee joined.) Simply click on the "Remove" button in the notification that appears and they will be ejected from the collaboration session.

Dans vs code, même si vous avez ignoré une notification de jointure, vous avez également la possibilité de supprimer un participant.In VS Code, even if you have dismissed a join notification, you also have the ability to remove a participant after that. En ouvrant la vue de Live Share dans l’Explorateur ou l’onglet personnalisé dans la barre d’activité VS Code, vous pouvez pointer sur le nom d’un participant ou cliquer dessus avec le bouton droit et sélectionner l’icône ou l’option « supprimer un participant ».By opening the Live Share view in the Explorer or the custom tab in the VS Code activity bar, you can hover over or right-click a participant's name and select the "Remove participant" icon or option.

Supprimer un participant dans VS Code

Exiger l’approbation de l’invitéRequiring guest approval

En règle générale, les participants qui adhèrent à une session de collaboration sont connectés à Live share à l’aide d’un compte Microsoft professionnel ou scolaire (AAD), d’un compte Microsoft personnel ou d’un compte github.Typically, participants that join a collaboration session will be signed into Live Share using a Microsoft work or school account (AAD), personal Microsoft account, or GitHub account. Alors que la valeur par défaut « notification + suppression » pour les utilisateurs connectés offre une bonne combinaison de vitesse et de contrôle pour ces invités, vous souhaiterez peut-être les réduire un peu plus si vous effectuez des opérations sensibles.While the "notification + remove" default for signed in users provides a good mix of speed and control for these guests, you may want to lock things down a bit more if you are doing something sensitive.

En outre, dans certaines circonstances, forcer tous les invités à se connecter pour rejoindre une session de collaboration peut être problématique.In addition, in certain circumstances forcing all guests to sign in to join a collaboration session can be problematic. Voici quelques exemples : demander à une personne de Live Share de participer en tant que visiteur, scénarios de classe/d’apprentissage ou de collaborer avec une personne qui ne dispose pas de l’un des types de compte pris en charge.Examples include asking someone new to Live Share to join as a guest, classroom/learning scenarios, or when collaborating with someone who does not have one of the supported account types. Pour ces raisons, Live Share pouvez autoriser les utilisateurs qui ne sont pas connectés à joindre des sessions de collaboration en tant qu’invités en lecture seule .For these reasons, Live Share can allow users that are not signed in to join collaboration sessions as read-only guests. Alors que l’hôte doit approuver ces invités avant de pouvoir se joindre par défaut, vous souhaiterez peut-être interdire ces invités « anonymes » ou toujours les approuver à la place.While the host needs to approve these guests before they can join by default, you may want to either disallow these "anonymous" guests or always approve them instead.

Exiger l’approbation de l’invité pour les utilisateurs connectésRequiring guest approval for signed in users

Si vous souhaitez empêcher les invités connectés de rejoindre vos sessions de collaboration jusqu’à ce que vous les ayez « approuvés », modifiez le paramètre suivant :If you would like to prevent signed in guests from joining your collaboration sessions until you have "approved" them, change the following setting:

  • Dans vs code, ajoutez ce qui suit à Settings. JSON (paramètres de > de fichiers > paramètres) :In VS Code, add the following to settings.json (File > Preferences > Settings):

    "liveshare.guestApprovalRequired": true
    
  • Dans Visual Studio, définissez outils > Options > Live share > « exiger l’approbation de l’invité » sur true.In Visual Studio, set Tools > Options > Live Share > "Require guest approval" to True.

    Fenêtre paramètres Visual Studio avec le paramètre approbation d’invité mis en surbrillance

À partir de ce point, vous serez invité à approuver chaque invité joint.From this point forward, you'll be asked to approve each guest that joins.

Visual Studio Code join approval request Visual Studio join approval request

En tant qu’invité, si vous rejoignez une session où ce paramètre est activé pour l’ordinateur hôte, vous êtes averti dans la barre d’État ou la boîte de dialogue de jointure que Live Share attend que l’hôte approuve.As a guest, if you join a session where the host has this setting enabled, you'll be notified in the status bar or join dialog that Live Share is waiting on the host to approve.

Rejet automatique ou acceptation d’utilisateurs qui ne sont pas connectés (anonymes)Auto-rejecting or accepting users that are not signed in (anonymous)

Comme décrit ci-dessus, Live Share peut être configuré pour autoriser les utilisateurs qui ne sont pas connectés à rejoindre une session de collaboration en tant qu’invités en lecture seule .As described above, Live Share can be configured to allow users that are not signed in to join a collaboration session as read-only guests. Bien que ces invités « anonymes » doivent entrer un nom lors de la jointure, un simple nom ne fournit pas le même niveau de garantie qu’une connexion réelle.While these "anonymous" guests must enter a name when joining, a simple name does not provide the same level of assurance as a real sign-in. Par conséquent, par défaut, l’hôte est invité à approuver tout invité anonyme, quel que soit le paramètre « exiger l’approbation de l’invité » décrit ci-dessus.Therefore, by default, the host is prompted to approve any anonymous guest regardless of the "require guest approval" setting described above.

Vous pouvez toujours refuser (désactiver les invités anonymes) ou toujours accepter les utilisateurs anonymes comme suit :You can always reject (disable anonymous guests) or always accept anonymous users instead as follows:

  • Dans vs code, définissez liveshare.anonymousGuestApproval dans Settings. JSON (préférences de > de fichier > paramètres) sur accept, rejectou prompt (valeur par défaut), le cas échéant.In VS Code, set liveshare.anonymousGuestApproval in settings.json (File > Preferences > Settings) to accept, reject, or prompt (the default) as appropriate.

  • Dans Visual Studio, définissez outils > Options > Live share > « approbation d’invité anonyme » sur accepter, rejeter ou demander (valeur par défaut), le cas échéant.In Visual Studio, set Tools > Options > Live Share > "Anonymous guest approval" to Accept, Reject, or Prompt (the default) as appropriate.

N’oubliez pas que vous ne devez envoyer Live Share des liens d’invitation à des personnes de confiance.Regardless, remember that you should only send Live Share invitation links to people you trust.

Contrôle de l’accès aux fichiers et visibilitéControlling file access and visibility

En tant qu’invité, le modèle distant de Live Share vous donne un accès en lecture/écriture rapide aux fichiers et dossiers que l’hôte a partagés avec vous sans avoir à synchroniser l’intégralité du contenu d’un projet.As a guest, Live Share's remote model gives you quick read/write access to files and folders the host has shared with you without having to sync the entire contents of a project. Par conséquent, vous pouvez parcourir et modifier les fichiers indépendamment dans l’intégralité de l’arborescence des fichiers partagés.You can therefore independently navigate and edit files in the entire shared file tree. Toutefois, cette liberté présente des risques pour l’hôte.However, this freedom does pose some risks to the host. D’un point de vue conceptuel, un développeur peut choisir d’accéder au code source et de le modifier sans que vous en soyez informé ou d’afficher le code source sensible ou les secrets situés quelque part dans l’arborescence des fichiers partagés.In concept, a developer could opt to go in and modify source code without your knowledge or see sensitive source code or "secrets" located somewhere in the shared file tree. Par conséquent, en tant qu’hôte, vous ne voudrez peut-être pas toujours que l’invité ait accès à l’intégralité d’un projet que vous partagez.Consequently, as a host, you may not always want the guest to have access to the entirety of a project you are sharing. Heureusement, un avantage supplémentaire de ce modèle distant est que vous pouvez choisir d’exclure des fichiers que vous ne souhaitez pas partager avec quiconque sans sacrifier les fonctionnalités.Thankfully, an added advantage of this remote model is that you can opt to "exclude" files you do not want to share with anyone without sacrificing on functionality. Vos invités peuvent toujours participer à des opérations telles que le débogage de sessions qui nécessiteraient normalement l’accès à ces fichiers s’ils le souhaitent.Your guests can still participate in things like debugging sessions that would normally require access to these files if they wanted to do so on their own.

Pour ce faire, vous pouvez ajouter un fichier . vsls. JSON au dossier ou au projet que vous partagez.You can accomplish this by adding a .vsls.json file to the folder or project you are sharing. Les paramètres que vous ajoutez à ce fichier au format JSON modifient la façon dont Live Share traite les fichiers.Any settings you add to this json formatted file changes how Live Share processes files. En plus de vous fournir un contrôle direct, ces fichiers peuvent également être validés dans le contrôle de code source afin que toute personne qui clone un projet puisse tirer parti de ces règles sans aucun effort supplémentaire de leur part.In addition to providing you direct control, these files can also be committed to source control so anyone cloning a project will be able to take advantage of these rules with no additional effort on their part.

Voici un exemple de fichier. vsls. JSON :Here's an example .vsls.json file:

{
    "$schema": "http://json.schemastore.org/vsls",
    "gitignore":"none",
    "excludeFiles":[
        "*.p12",
        "*.cer",
        "token",
        ".gitignore"
    ],
    "hideFiles": [
        "bin",
        "obj"
    ]
}

Notes

Vous pouvez également faire en sorte que tous les fichiers/dossiers que vous partagez soient en lecture seule lorsque vous démarrez une session de collaboration.You can also make the all files/folders you share read-only when you start a collaboration session. Pour plus d’informations, voir ci-dessous .See below for details.

Passons en revue la façon dont ces propriétés changent ce que les invités peuvent faire.Let's walk through how these properties change what guests can do.

PropriétésProperties

La propriété excludeFiles vous permet de spécifier une liste de modèles de fichier glob (à l’instar des fichiers. gitignore trouvés) qui empêche Live share d’ouvrir certains fichiers ou dossiers pour les invités.The excludeFiles property allows you to specify a list of glob file patterns (very much like those found .gitignore files) that prevents Live Share from opening certain files or folders for guests. Sachez qu’il s’agit de scénarios inclusifs, tels qu’un invité suivant ou le passage à votre emplacement de modification, l’exécution pas à pas d’un fichier lors du débogage collaboratif, de toutes les fonctionnalités de navigation du code telles que atteindre la définition, et bien plus encore.Be aware that this is inclusive of scenarios like a guest following or jumping to your edit location, stepping into a file during collaborative debugging, any code navigation features like go to definition, and more. Elle est destinée aux fichiers que vous ne souhaitez jamais partager dans toutes les circonstances telles que celles contenant des secrets, des certificats ou des mots de passe.It is intended for files you never want to share under any circumstances like those containing secrets, certificates, or passwords. Par exemple, étant donné qu’ils contrôlent la sécurité, les fichiers. vsls. JSON sont toujours exclus.For example, since they control security, .vsls.json files are always excluded.

La propriété hideFiles est similaire, mais elle n’est pas aussi stricte.The hideFiles property is similar, but not quite as strict. Ces fichiers sont simplement masqués dans l’arborescence des fichiers.These files are simply hidden from the file tree. Par exemple, si vous parvenez à effectuer un pas à pas détaillé dans l’un de ces fichiers pendant le débogage, il est toujours ouvert dans l’éditeur.For example, if you happened to step into one of these files during debugging, it is still opened in the editor. Cette propriété est surtout utile si vous n’avez pas de configuration de fichier. gitignore (comme c’est le cas si vous utilisez un système de contrôle de code source différent) ou si vous souhaitez simplement augmenter ce qui est déjà nécessaire pour éviter tout encombrement ou toute confusion.This property is primarily useful if you do not have a .gitignore file setup (as would be the case if you are using a different source control system) or if you simply want to augment what is already there to avoid clutter or confusion.

Le paramètre gitignore établit la manière dont Live share doit traiter le contenu des fichiers. gitignore dans des dossiers partagés.The gitignore setting establishes how Live Share should process the contents of .gitignore files in shared folders. Par défaut, tout modèles glob trouvé dans les fichiers. gitignore est traité comme s’il avait été spécifié dans la propriété « hideFiles ».By default, any globs found in .gitignore files are treated as if they were specified in the "hideFiles" property. Toutefois, vous pouvez choisir un comportement différent en utilisant l’une des valeurs suivantes :However, you can choose a different behavior using one of the following values:

OptionOption RésultatsResult
none le contenu de. gitignore est visible pour les invités dans l’arborescence de fichiers (en supposant qu’ils ne sont pas filtrés par un paramètre d’éditeur invité)..gitignore contents are visible to guests in the file tree (assuming they are not filtered by a guest editor setting).
hide Valeur par défaut.The default. Les modèles glob dans. gitignore sont traités comme s’ils étaient dans la propriété « hideFiles ».Globs inside .gitignore are processed as if they were in the "hideFiles" property.
exclude Les modèles glob dans. gitignore sont traités comme s’ils étaient dans la propriété « excludeFiles ».Globs inside .gitignore are processed as if they were in the "excludeFiles" property.

L’inconvénient du paramètre exclude est que le contenu de dossiers comme node_modules est fréquemment dans. gitignore, mais peut être utile pour effectuer un pas à pas détaillé durant le débogage.A downside of the exclude setting is that the contents of folders like node_modules are frequently in .gitignore but can be useful to step into during debugging. Par conséquent, Live Share prend en charge la possibilité d’inverser une règle à l’aide de «  ! » dans la propriété excludeFiles.Consequently, Live Share supports the ability to reverse a rule using "!" in the excludeFiles property. Par exemple, ce fichier. vsls. JSON exclut tout ce qui se trouve dans « . gitignore », à l’exception de node_modules :For example, this .vsls.json file would exclude everything in ".gitignore" except for node_modules:

{
    "$schema": "http://json.schemastore.org/vsls",
    "gitignore":"exclude",
    "excludeFiles":[
        "!node_modules"
    ]
}

Les règles de masquage et d’exclusion sont traitées séparément. par conséquent, si vous souhaitez toujours masquer node_modules pour réduire l’encombrement sans réellement l’exclure, vous pouvez simplement modifier le fichier comme suit :The hide and exclude rules are processed separately, so if you still wanted to hide node_modules to reduce clutter without actually excluding it, you can simply edit the file as follows:

{
    "$schema": "http://json.schemastore.org/vsls",
    "gitignore":"exclude",
    "excludeFiles":[
        "!node_modules"
    ],
    "hideFiles":[
        "node_modules"
    ]
}

fichiers. vsls. JSON dans les sous-dossiers.vsls.json files in sub-folders

Enfin, tout comme. gitignore, les fichiers. vsls. JSON peuvent être placés dans des sous-dossiers.Finally, just like .gitignore, .vsls.json files can be placed in sub-folders. Les règles de masquage/exclusion sont déterminées en commençant par le fichier. vsls. JSON dans le dossier racine que vous avez partagé (le cas échéant), puis en parcourant à chaque sous-dossier à partir d’un fichier donné pour rechercher les fichiers. vsls. JSON à traiter.Hide/exclude rules are determined by starting with the .vsls.json file in the root folder you have shared (if present) and then walking through at each sub-folder from there leading to a given file to look for .vsls.json files to process. Le contenu des fichiers. vsls. JSON dans des dossiers plus éloignés de l’arborescence de fichiers, puis complète (ou remplace) les règles établies à des niveaux supérieurs.The contents of .vsls.json files in folders farther down the file tree then supplement (or override) rules established at higher levels.

Désactivation du partage de fichiers externeDisabling external file sharing

Par défaut, Live Share partagera également tous les fichiers que l’hôte ouvre et qui sont externes au dossier/à la solution partagés.By default, Live Share will also share any files the host opens that are external to the shared folder / solution. Cela facilite l’ouverture rapide d’autres fichiers associés sans devoir partager à nouveau.This makes it easy to quickly open up other related files without having to re-share.

Si vous préférez désactiver cette fonctionnalité :If you would prefer to disable this feature:

  • Dans vs code, ajoutez ce qui suit à Settings. JSON :In VS Code, add the following to settings.json:

    "liveshare.shareExternalFiles": false
    
  • Dans Visual Studio, définissez outils > Options > Live share > « partager des fichiers externes » sur false.In Visual Studio, set Tools > Options > Live Share > "Share External Files" to False

Mode Lecture seuleRead-only mode

Parfois, lorsque vous partagez votre code en tant qu’ordinateur hôte, vous ne souhaitez pas que vos invités apportent des modifications.Sometimes when you share your code as a host, you don't want your guests to make edits. Vous aurez peut-être besoin de votre invité pour jeter un coup d’œil à une partie de votre code, ou vous affichez votre projet sur un grand nombre d’invités et ne souhaitez pas effectuer de modifications accidentelles ou accidentelles.You might need your guest to take a look at some of your code, or you are showing your project to a large number of guests and do not want any unnecessary or accidental edits to be made. Live Share offre la possibilité de partager des projets en mode lecture seule.Live Share offers the ability to share projects in read-only mode.

En tant qu’hôte, lors du partage, vous avez la possibilité d’activer le mode lecture seule pour une session de collaboration.As a host, when sharing, you have the option to enable read-only mode for a collaboration session. Lorsqu’un invité se joint, il ne peut pas apporter de modifications au code, même si vous pouvez toujours voir les curseurs et les mises en surbrillance d’autres, ainsi que parcourir le projet.When a guest joins, they will not be able to make edits to the code, though you can still see each other's cursors and highlights as well as navigate through the project.

Vous pouvez toujours déboguer avec des invités en mode lecture seule.You can still co-debug with guests while in read-only mode. Les invités n’ont pas la possibilité d’effectuer un pas à pas détaillé dans le processus de débogage, mais ils peuvent toujours ajouter ou supprimer des points d’arrêt et inspecter les variables.Guests will not have the ability to step through the debugging process, but can still add or remove breakpoints, and inspect variables. En outre, vous pouvez toujours partager des serveurs et des terminaux (en lecture seule) avec des invités.Additionally, you can still share servers and terminals (read-only) with guests.

Vous pouvez en savoir plus sur le démarrage d’une session de collaboration en lecture seule : VS Code etYou can learn more about starting a read-only collaboration session: VS Code VS

CodébogageCo-debugging

Lorsque vous rencontrez des problèmes de codage difficile ou des bogues, il peut être très utile d’avoir une paire d’yeux pour le débogage.When you're tackling tough coding problems or bugs, having an extra pair of eyes when debugging can be really useful. Visual Studio Live share active le « débogage collaboratif » ou le « débogage » en partageant la session de débogage avec tous les invités chaque fois que l’hôte démarre le débogage.Visual Studio Live Share enables "collaborative debugging" or "co-debugging" by sharing the debugging session with all guests whenever the host starts debugging.

En tant qu’ordinateur hôte, vous avez un contrôle total sur le démarrage ou l’arrêt d’une session de débogage, mais le débogage pose des risques si vous partagez avec une personne à laquelle vous n’êtes pas sûr.As a host, you are in complete control over when a debugging session starts or stops, but co-debugging does pose some risks if you are sharing with someone you do not trust. Live Share permet aux invités que vous invitez d’exécuter des commandes de console/REPL. il y a donc un risque qu’un acteur malveillant exécute une commande que vous ne voulez pas qu’il exécute.Live Share allows guests you invite to run console/REPL commands and there is therefore a risk of a malicious actor running a command you would not want them to run.

Par conséquent, vous ne devez co-déboguer que les personnes avec lesquelles vous faites confiance.Consequently, you should only co-debug with those you trust.

En savoir plus : VS Code etLearn more: VS Code VS

Partage d’un serveur localSharing a local server

Lors du codébogage, il peut être très utile de pouvoir accéder aux différentes parties de l’application prise en charge par l’hôte pendant la session de débogage.When co-debugging, it can be really useful to get access to different parts of the application being served up by the host for the debugging session. Vous pouvez accéder à l’application dans un navigateur, accéder à une base de données locale ou atteindre un point de terminaison REST à partir de vos outils.You may want to access the app in a browser, access a local database, or hit a REST endpoint from your tools. Live Share vous permet de « partager un serveur » qui mappe un port local sur l’ordinateur de l’ordinateur hôte vers le même port sur l’ordinateur de l’invité.Live Share lets you "share a server" which maps a local port on the host's machine to the exact same port on guest's machine. En tant qu’invité, vous pouvez interagir avec l’application exactement comme si elle était exécutée localement sur votre ordinateur (par exemple, l’hôte et l’invité peuvent tous deux accéder à une application Web s’exécutant sur http://localhost:3000).As a guest, you can then interact with the application exactly as if it was running locally on your machine (e.g. the host and guest can both access a web app running on http://localhost:3000).

Toutefois, en tant qu’hôte, vous devez être très sélectif avec les ports que vous partagez avec les invités et partager des ports d’application plutôt que des ports système.However, as a host, you should be very selective with the ports you share with guests and only share application ports rather system ports. Du côté des invités, les ports partagés se comportent exactement comme si le serveur/service était en cours d’exécution sur leur propre ordinateur.For guests, shared ports will behave exactly like they would if the server/service was running on their own machine. Cette fonction est très utile, mais il faut éviter tout risque de partager le mauvais port.This is very useful, but if the wrong port is shared can also be risky. C’est la raison pour laquelle Live Share n’effectue aucune supposition quant à ce qui doit ou ne doit pas être partagé sans paramètre de configuration et l’hôte effectuant une action.For this reason, Live Share does not make any assumptions about what should or should not be shared without a configuration setting and the host performing an action.

Dans Visual Studio, le port d’application Web spécifié dans les projets ASP.net est automatiquement partagé pendant le débogage uniquement pour faciliter l’accès invité à l’application Web lors de l’exécution.In Visual Studio, the web application port specified in ASP.NET projects is automatically shared during debugging only to facilitate guest access to the web app when running. Toutefois, vous pouvez désactiver cette automatisation en définissant outils > Options > Live Share > « partager l’application Web lors du débogage » en « false », si vous préférez.However, you can turn off this automation by setting Tools > Options > Live Share > "Share web app on debug" to "False" if you prefer.

Dans Visual Studio Code, Live Share tente de détecter les ports d’application appropriés et de les partager.In Visual Studio Code, Live Share attempts to detect the proper application ports and share them. Toutefois, vous pouvez désactiver ce paramètre en ajoutant le code suivant à Settings. JSON :However, you can disable this by adding the following to settings.json:

    liveshare.autoShareServers: false

Dans les deux cas, soyez prudent lorsque vous partagez des ports supplémentaires.In either case, exercise care when sharing additional ports.

Vous pouvez en savoir plus sur la configuration de la fonctionnalité ici : VS Code etYou can learn more about configuring the feature here: VS Code VS

Partage d’un terminalSharing a terminal

Aujourd’hui, le développement utilise couramment un large éventail d’outils en ligne de commande.Modern development makes frequent use of a wide array of command line tools. Heureusement, Live Share vous permet de « partager un terminal » avec vos invités en tant qu’hôte.Fortunately, Live Share allows you as a host to optionally "share a terminal" with guests. Le terminal partagé peut fonctionner en lecture seule ou en collaboration totale, auquel cas tant l’hôte que les invités ont la possibilité d’exécuter des commandes et de voir les résultats.The shared terminal can be read-only or fully collaborative so both you and the guests can run commands and see the results. En tant qu’hôte, vous pouvez autoriser d’autres collaborateurs à voir simplement la sortie ou à utiliser un nombre quelconque d’outils en ligne de commande pour exécuter des tests, générer ou même trier des problèmes spécifiques à l’environnement.As the host, you're able to allow other collaborators to either just see the output or to use any number of command line tools to run tests, builds, or even triage environment-specific problems.

Seuls les hôtes peuvent démarrer des terminaux partagés pour empêcher les invités de démarrer un et d’effectuer une tâche que vous n’attendez pas ou que vous ne souhaitez pas regarder.Only hosts can start shared terminals to prevent guests from starting one up and doing something you are not expecting or watching. Lorsque vous démarrez un terminal partagé en tant qu’ordinateur hôte, vous pouvez spécifier s’il doit être en lecture seule ou en lecture/écriture.When you start a shared terminal as a host, you can specify whether it should be read-only or read/write. Dans le deuxième cas, tout le monde, y compris l’hôte, peut taper dans le terminal, ce qui permet d’intervenir si un invité effectue une action indésirable.When the terminal is read/write, everyone can type in the terminal including the host which makes it easy to intervene if a guest is doing something you do not like. Dans un souci de sécurité toutefois, ne donnez un accès en lecture/écriture qu’aux invités qui en ont réellement besoin et tenez-vous-en aux terminaux en lecture seule si vous souhaitez simplement qu’ils voient le résultat des commandes exécutées.However, to be safe, you should only give read/write access to guests when you know they actually need it and stick with read-only terminals for scenarios where you just want the guest to see the output of any commands you run.

Dans Visual Studio, les terminaux ne sont pas partagés par défaut.In Visual Studio, terminals are not shared by default. Dans VS Code, les terminaux sont automatiquement partagés par défaut en lecture seule .In VS Code, terminals are automatically shared read-only by default. Toutefois, vous pouvez désactiver ce paramètre en ajoutant le code suivant à Settings. JSON :However, you can disable this by adding the following to settings.json:

"liveshare.autoShareTerminals": false

En savoir plus : VS Code etLearn more: VS Code VS

Lorsque vous vous connectez à l’aide d’une adresse de messagerie professionnelle ou scolaire Microsoft, vous pouvez voir un message indiquant « nécessite l’approbation de l’administrateur » lors de la connexion.When signing in using a Microsoft backed work or school email address you may see a message saying "Need admin approval" when signing in. Cela est dû au fait que Live Share nécessite un accès en lecture aux informations utilisateur pour ses fonctionnalités de sécurité et que votre locataire Azure AD est configuré pour exiger le « consentement de l’administrateur » pour les nouvelles applications qui accèdent au contenu de l’annuaire.This is because Live Share requires read access to user information for its security features and your Azure AD tenant is set up to require “admin consent” for new applications accessing the contents of the directory.

Votre administrateur AD doit résoudre ce cas pour vous en utilisant les informations suivantes :Your AD admin would need to resolve this for you using the following information:

Cette opération ne doit être effectuée qu’une seule fois pour toute personne utilisant Live Share.This would only need to be done once for anyone using Live Share. Pour plus d’informations, voir ici et ici .See here and here for details.

Voir aussiSee also

Vous rencontrez des problèmes ?Having problems? Voir la section dépannage ou fournir des commentaires.See troubleshooting or provide feedback.