Types d'isolation

L’accès au stockage isolé est toujours limité à l’utilisateur qui l’a créé. Pour implémenter ce type d’isolation, le Common Language Runtime utilise la même notion d’identité de l’utilisateur reconnue par le système d’exploitation, c’est-à-dire l’identité associée au processus par lequel le code s’exécute lorsque le magasin est ouvert. Cette identité est l’identité d’un utilisateur, mais l’emprunt d’identité peut provoquer un changement dynamique de l’identité actuelle de l’utilisateur.

L’accès au stockage isolé est également limité en fonction de l’identité associée au domaine et à l’assembly de l’application, ou à l’assembly uniquement. Le runtime obtient ces identités des façons suivantes :

  • L’identité de domaine constitue la preuve de l’application, et dans le cas d’une application Web, il peut s’agir de l’URL complète. Pour le code hébergé par l’interpréteur de commandes, l’identité de domaine peut être basée sur le chemin du répertoire de l’application. Par exemple, si l’exécutable s’exécute à partir du chemin d’accès C:\Office\MyApp.exe, l’identité de domaine serait C:\Office\MyApp.exe.

  • L’identité d’assembly est la preuve de l’assembly. Elle peut provenir d’une signature numérique chiffrée, qui peut être le nom fort de l’assembly, de l’éditeur du logiciel de l’assembly, ou de son identité d’URL. Si un assembly possède un nom fort et une identité d’éditeur de logiciel, l’identité de l’éditeur de logiciel est utilisée. Si l’assembly provient d’Internet et n’est pas signé, l’identité d’URL est utilisée. Pour plus d’informations sur les assemblys et les noms forts, consultez Programmation à l'aide d'assemblys.

  • Les magasins itinérants se déplacent avec un utilisateur qui dispose d’un profil utilisateur itinérant. Les fichiers sont enregistrés dans un répertoire réseau et téléchargés sur n’importe quel ordinateur auquel l’utilisateur se connecte. Pour plus d'informations sur les profils utilisateur itinérants, consultez IsolatedStorageScope.Roaming.

En combinant les concepts d’utilisateur, de domaine et d’identité d’assembly, le stockage isolé permet d’isoler des données de plusieurs manières, chacune avec ses propres scénarios d’utilisation :

Chacune de ces isolations peut être combinée avec un profil utilisateur itinérant. Pour plus d’informations, consultez la section Stockage et profil itinérant isolé.

L’illustration suivante montre comment les magasins sont isolés dans différentes étendues :

Diagram that shows isolation by user and assembly.

À l’exception des magasins itinérants, le stockage isolé est toujours implicitement isolé par l’ordinateur car il utilise les installations de stockage locales d’un ordinateur donné.

Important

Le stockage isolé n’est pas disponible pour les applications Windows 8.x Store. À la place, utilisez les classes de données d’application des espaces de noms Windows.Storage inclus dans l’API Windows Runtime pour stocker des données locales et des fichiers. Pour plus d’informations, consultez Données d’applications dans le Centre de développement Windows.

Isolation par utilisateur et par assembly

Lorsque l’assembly qui utilise les données du magasin doit être accessible depuis n’importe quel domaine d’application, l’isolation par utilisateur et par assembly est recommandée. Dans ce cas, le stockage isolé sert généralement à stocker les données qui s’appliquent à plusieurs applications et qui ne sont pas liées à une application spécifique, par exemple le nom d’utilisateur ou des informations de licence. Pour accéder au stockage isolé par utilisateur et par assembly, le code doit être approuvé pour transférer des informations entre les applications. En règle générale, l’isolation par utilisateur et par assembly est autorisée sur les intranets mais pas sur Internet. L’appel de la méthode statique IsolatedStorageFile.GetStore et le passage d’un utilisateur et d’un assembly IsolatedStorageScope génèrent un stockage avec ce type d’isolation.

L’exemple de code suivant extrait un magasin isolé par utilisateur et par assembly. Le magasin est accessible via l’objet isoFile.

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Assembly, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
    IsolatedStorageScope.Assembly, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Assembly, Nothing, Nothing)

Pour obtenir un exemple qui utilise les paramètres de preuve, consultez GetStore(IsolatedStorageScope, Evidence, Type, Evidence, Type).

La méthode GetUserStoreForAssembly est disponible comme raccourci, comme illustré dans l’exemple de code suivant. Ce raccourci ne peut pas être utilisé pour ouvrir des magasins capables d’itinérance ; utilisez GetStore dans ce cas.

IsolatedStorageFile^ isoFile = IsolatedStorageFile::GetUserStoreForAssembly();
IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForAssembly();
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetUserStoreForAssembly()

Isolation par utilisateur, par domaine et par assembly

Si votre application utilise un assembly tiers qui nécessite une banque de données privée, vous pouvez utiliser le stockage isolé pour stocker ces données privées. L’isolation par utilisateur, domaine et assembly garantit que seul le code d’un assembly donné peut accéder aux données et uniquement lorsque cet assembly est utilisé par l’application en cours d’exécution lors de la création du magasin, et lorsque l’utilisateur pour lequel le magasin a été créé exécute l’application. L’isolation par utilisateur, domaine et assembly empêche l’assembly tiers de transmettre des données à d’autres applications. Ce type d’isolation devrait être votre choix par défaut si vous savez que vous utiliserez le stockage isolé, mais que vous hésitez sur le type d’isolation adéquat. L’appel de la méthode statique GetStore de IsolatedStorageFile et le passage d’un utilisateur, d’un domaine et d’un assembly IsolatedStorageScope génèrent un stockage avec ce type d’isolation.

L’exemple de code suivant extrait un magasin isolé par utilisateur, domaine et assembly. Le magasin est accessible via l’objet isoFile.

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Domain |
        IsolatedStorageScope::Assembly, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
        IsolatedStorageScope.Domain |
        IsolatedStorageScope.Assembly, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Domain Or _
        IsolatedStorageScope.Assembly, Nothing, Nothing)

Une autre méthode est disponible comme raccourci, comme illustré dans l’exemple de code suivant. Ce raccourci ne peut pas être utilisé pour ouvrir des magasins capables d’itinérance ; utilisez GetStore dans ce cas.

IsolatedStorageFile^ isoFile = IsolatedStorageFile::GetUserStoreForDomain();
IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForDomain();
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetUserStoreForDomain()

Stockage et profil itinérant isolé

Les profils utilisateur itinérants représentent une fonctionnalité Windows qui permet à un utilisateur de configurer une identité sur un réseau et d’utiliser cette identité pour se connecter à n’importe quel ordinateur du réseau, en conservant tous les réglages personnalisés. Un assembly qui utilise le stockage isolé peut spécifier que le stockage isolé de l’utilisateur devra accompagner le profil utilisateur itinérant. L’itinérance peut être utilisée conjointement avec l’isolation par utilisateur et par assembly, ou avec l’isolation par utilisateur, domaine et assembly. Si aucune portée d’itinérance n’est définie, les magasins ne bénéficieront d’aucune itinérance, même si un profil utilisateur itinérant est utilisé.

L’exemple de code suivant récupère un magasin itinérant isolé par utilisateur et assembly. Le magasin est accessible via l’objet isoFile.

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Assembly |
        IsolatedStorageScope::Roaming, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
        IsolatedStorageScope.Assembly |
        IsolatedStorageScope.Roaming, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Assembly Or _
        IsolatedStorageScope.Roaming, Nothing, Nothing)

Une portée de domaine peut être ajoutée afin de créer un magasin itinérant isolé par utilisateur, domaine et application. L'exemple de code suivant illustre cette tâche.

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Assembly | IsolatedStorageScope::Domain |
        IsolatedStorageScope::Roaming, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
        IsolatedStorageScope.Assembly | IsolatedStorageScope.Domain |
        IsolatedStorageScope.Roaming, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Assembly Or IsolatedStorageScope.Domain Or _
        IsolatedStorageScope.Roaming, Nothing, Nothing)

Voir aussi