le nouveau format xps (xml paper specification) et la sécurité philippe beraud consultant...
TRANSCRIPT
Le nouveau format XPS (XML Paper Specification) et la sécurité
Le nouveau format XPS (XML Paper Specification) et la sécurité
Philippe BeraudConsultant Principal
Microsoft France
Principales demandesOuvertureOuverture
Formats basés sur XML/ZIPFormats basés sur XML/ZIPBénéficier d’une large palette d’outils et de solutions disponiblesBénéficier d’une large palette d’outils et de solutions disponibles
Extensibilité et transparenceExtensibilité et transparencePouvoir étendre les formats avec ses données propresPouvoir étendre les formats avec ses données propres
Pouvoir facilement utilisées les données « capturées » dans les Pouvoir facilement utilisées les données « capturées » dans les documentsdocuments
Intégration facile au sein de solutions et de WorkflowsIntégration facile au sein de solutions et de Workflows
Archivage – Ne pas avoir besoin d’applications particulières pour Archivage – Ne pas avoir besoin d’applications particulières pour reconsulter les documentsreconsulter les documents
Support d’une solution de bout-en-boutSupport d’une solution de bout-en-bout (e2e) (e2e)Applications d’éditionApplications d’édition
Plateformes, Workflows et applications LOBPlateformes, Workflows et applications LOB
Périphériques Périphériques
SécuritéSécuritéDocuments fiablesDocuments fiables
Le contenu est sûr et prévisibleLe contenu est sûr et prévisible
Spécifications Open Document
Open Packaging Conventions (Open Packaging Conventions (paquetpaquet))Définit des conventions pour l'usage d'URI, d’XML, et d’Unicode Définit des conventions pour l'usage d'URI, d’XML, et d’Unicode pour stocker le contenu et les ressourcespour stocker le contenu et les ressources
Définit des services communs pour n'importe quel document : Définit des services communs pour n'importe quel document : propriétés élémentaires, signatures numériquespropriétés élémentaires, signatures numériques
Définit le « mapping » du paquet vers l’archive ZIPDéfinit le « mapping » du paquet vers l’archive ZIP
XML Paper Specification (Document XPS)XML Paper Specification (Document XPS)Utilise la spécificationUtilise la spécification Open Packaging Conventions Open Packaging Conventions
« Papier électronique » à disposition fixe et archivable« Papier électronique » à disposition fixe et archivableSpécifie des balises compatibles avec XAMLSpécifie des balises compatibles avec XAML
Paquets partagé
Les formats Office system 2007 et les documents XPS Les formats Office system 2007 et les documents XPS partagentpartagent
Open packaging conventions (paquet)Open packaging conventions (paquet)
Services communs dans la spécification : propriétés élémentaires, Services communs dans la spécification : propriétés élémentaires, signatures numériquessignatures numériques
Services établit pour travailler avec le paquet : Gestion des droits Services établit pour travailler avec le paquet : Gestion des droits d’usaged’usage
Les éditeurs de solutions, les entreprises, etc. peuvent utiliser Les éditeurs de solutions, les entreprises, etc. peuvent utiliser le même paquetle même paquet
UtiliserUtiliser les APIs Document de WinFX WPF les APIs Document de WinFX WPFDisposer d’une API de gestion de fichiers plutôt que de devoir définir et Disposer d’une API de gestion de fichiers plutôt que de devoir définir et développer une API propre à chaque format de fichierdévelopper une API propre à chaque format de fichier
Créer des paquets directement à l’aide des outils XML et ZIP Créer des paquets directement à l’aide des outils XML et ZIP disponiblesdisponibles
ObjectifObjectifRéduire substantiellement le code et l’effort d’ingénierie requis Réduire substantiellement le code et l’effort d’ingénierie requis pour gérer et utiliser de multiples types de documentspour gérer et utiliser de multiples types de documents
Définitions du format de fichier
XPS : XPS : XML Paper SpecificationXML Paper Specification
Paquetage : la fondation de multiples formats de fichiersPaquetage : la fondation de multiples formats de fichiers
ZIPZIP
Abstraction Parties et RelationsAbstraction Parties et Relations
Services Services CommunsCommuns
Spécification « Spécification « Open Packaging ConventionsOpen Packaging Conventions » »
XM
L Pap
er
XM
L Pap
er
Speci
fica
tio
Speci
fica
tio
nn
Formats Formats Open XML Open XML
Office Office system system 20072007
Formats Formats personnalispersonnalis
ésés
FormatFormat DocumenDocumen
t t XPSXPS
Nouvelles Technologies Document
Open Packaging ConventionsOpen Packaging Conventions et et XML Paper XML Paper Specification (XPS)Specification (XPS) à destination de à destination de n’importe quelle n’importe quelle
application sur n’importe quelle plateformeapplication sur n’importe quelle plateforme
SpécificationsSpécificationsOuvertesOuvertes
Un utilitaire WPF qui permet aux utilisateurs de Un utilitaire WPF qui permet aux utilisateurs de visualiser, de protéger et d’imprimer des documents visualiser, de protéger et d’imprimer des documents
XPS. Hébergé dans IEXPS. Hébergé dans IEXPS ViewerXPS Viewer
Un convertisseur Imprimer-vers-fichier pour la création Un convertisseur Imprimer-vers-fichier pour la création de documents XPS à partir de n’importe quelle de documents XPS à partir de n’importe quelle
application sur la plateforme Microsoft Windowsapplication sur la plateforme Microsoft Windows
Pilote d’impressionPilote d’impressionVers Vers
« Sauvegarder « Sauvegarder sous »sous »
Document XPSDocument XPS
Interfaces de Interfaces de programmationprogrammation (APIs) (APIs) pour la gestion pour la gestion des paquets et du contenudes paquets et du contenu
APIs APIs Document Document WinFX WPFWinFX WPF
Pipeline d’impression avec un format de spool intégré Pipeline d’impression avec un format de spool intégré et un langage de description page-imprimante (PDL) et un langage de description page-imprimante (PDL)
pour accélérer et améliorer la fidélité des travaux pour accélérer et améliorer la fidélité des travaux d’impression. Nouveau modèle de piloted’impression. Nouveau modèle de pilote
XPS Print PathXPS Print Path
Usage du « papier électronique »
80% des « papiers électroniques »…80% des « papiers électroniques »…Sont utilisés pour imprimer Sont utilisés pour imprimer partager partager visualiser visualiser archiver archiver
70% de l’ensemble des PDFs provient de Microsoft Word70% de l’ensemble des PDFs provient de Microsoft Word
Les Les nouvelles technologies Document supportent pleinement ces 80% nouvelles technologies Document supportent pleinement ces 80% Utiliser la puissance des outils Microsoft Office pour obtenir le résultat Utiliser la puissance des outils Microsoft Office pour obtenir le résultat souhaitésouhaitéPublier le document vers XPSPublier le document vers XPS
Directement depuis Office system 2007Directement depuis Office system 2007Depuis n’importe quelle application Windows avec le pilote d’impression Depuis n’importe quelle application Windows avec le pilote d’impression Microsoft XPS Document Writer (MXDW)Microsoft XPS Document Writer (MXDW)Depuis des applications .Net en sauvegardant directement au format Depuis des applications .Net en sauvegardant directement au format XPS à partir d’un contenu XAML arbitraire via WPF/MXDWXPS à partir d’un contenu XAML arbitraire via WPF/MXDW
Visualiser depuis IE avec XPS ViewerVisualiser depuis IE avec XPS ViewerPoser et valider les signatures numériques Poser et valider les signatures numériques Publier et consommer des documents XPS avec des droits d’usagePublier et consommer des documents XPS avec des droits d’usage
Archiver dans Windows SharePoint Services (WSS)Archiver dans Windows SharePoint Services (WSS)
……Les autres 20% sont le vecteur d'autres solutions de documentsLes autres 20% sont le vecteur d'autres solutions de documentsAssemblage de documents, collaboration, formulaires, transactions Assemblage de documents, collaboration, formulaires, transactions métier sécurisées (reçu, ticket, bordereau d’envoi, etc.)métier sécurisées (reçu, ticket, bordereau d’envoi, etc.)Les nouvelles technologies Document couvrent également ces 20% Les nouvelles technologies Document couvrent également ces 20%
Utiliser les documents XPS pour publier Utiliser les documents XPS pour publier visualiser visualiser archiver archiver conjointement avec les autres technologies WinFXconjointement avec les autres technologies WinFX
Opportunités offertes1.1. Définir des formats personnalisés de fichierDéfinir des formats personnalisés de fichier2.2. Accéder directement au contenu des fichiers Office system Accéder directement au contenu des fichiers Office system
2007 et des documents XPS2007 et des documents XPS3.3. Offrir des solutions pour les documents XPS, Office system Offrir des solutions pour les documents XPS, Office system
2007 ou fichiers personnalisés 2007 ou fichiers personnalisés
API WinFX API WinFX Document XPSDocument XPS
API WinFX API WinFX PackagePackageA
PIs
APIs
Win
FXW
inFX
Formats Formats Open XML Open XML
Office Office system system 20072007
FormatFormat DocumenDocumen
t t XPSXPS
Formats Formats personnalispersonnalis
ésés
APIsAPIspersonnalisépersonnalisé
eses
ApplicationsApplications
Modèle de paquet
Offre une fondation pour la définition d’un format de fichierOffre une fondation pour la définition d’un format de fichierA destination de n’importe quelle applicationA destination de n’importe quelle application
De multiples implémentations sous jacentesDe multiples implémentations sous jacentesDocument XPSDocument XPS
Format Open XML Office system 2007Format Open XML Office system 2007
AutresAutres
Bâti sur les conceptsBâti sur les concepts de parties ( de parties (partsparts) et de relations ) et de relations ((relationshipsrelationships))
Les parties correspondent aux flux de Les parties correspondent aux flux de donnéesdonnées (XML (XML ouou binairebinaire))
Les relations décrivent comment les parties sont rattachés entre ellesLes relations décrivent comment les parties sont rattachés entre elles
Stocké dans une archiveStocké dans une archive ZIP ZIPBénéficier de la robustesse de ZIPBénéficier de la robustesse de ZIP
ZIP est recouvrableZIP est recouvrable
La compression bénéficie à la taille des fichiersLa compression bénéficie à la taille des fichiers
Services communs : propriétés élémentaires
Un paquetage peut inclure un ensemble de métadonnées Un paquetage peut inclure un ensemble de métadonnées regroupé sous une unique partie XML : la partie regroupé sous une unique partie XML : la partie Core PropertiesCore Properties
Découverte via une relation racine avec un type de relation Découverte via une relation racine avec un type de relation spécifiquespécifique
Utilise un type de contenu spécifiqueUtilise un type de contenu spécifique
Disponibles aussi bien pour les documents XPS que les fichiers Disponibles aussi bien pour les documents XPS que les fichiers Office system 2007Office system 2007
CategoryCategoryContent StatusContent StatusContentTypeContentTypeCreatorCreatorDateCreatedDateCreatedDateModifiedDateModifiedDescriptionDescriptionIdentifierIdentifier
KeywordsKeywordsLanguageLanguageLastModifiedByLastModifiedByLastPrintedLastPrintedRevisionRevisionSubjectSubjectTitleTitleVersionVersion
CoreCore PropertiesProperties
XPS
Pack
ag
eX
PS
Pack
ag
eR
ela
tionsh
ips
Rela
tionsh
ips Common Package PartsCommon Package Parts
Core Properties
Services communs : signatures numériques
Permet de valider que le contenu signé n’a pas été altéréPermet de valider que le contenu signé n’a pas été altéré
Disponible pour l’ensemble des formats de fichier basés sur les Disponible pour l’ensemble des formats de fichier basés sur les paquetagespaquetages
Respecte les standardsRespecte les standardsRecommandation W3C XML Digital SignatureRecommandation W3C XML Digital Signature
XML-Signature XML-Signature Syntax and Processing W3C Recommendation 12 FebruarySyntax and Processing W3C Recommendation 12 February 2002, http://www.w3.org/TR/xmldsig-core2002, http://www.w3.org/TR/xmldsig-core
Certificats X509 v3Certificats X509 v3
Les parties signées sont définies par la politique de signatureLes parties signées sont définies par la politique de signatureLes applications valide la signature en accord avec une politique Les applications valide la signature en accord avec une politique spécifiquespécifique
L’ajout de nouvelles parties et relations peut casser une signature, selon L’ajout de nouvelles parties et relations peut casser une signature, selon la politiquela politique
La politique par défaut des documents XPS consiste à signer l’ensemble La politique par défaut des documents XPS consiste à signer l’ensemble des parties et relations définiesdes parties et relations définies
Peut être étendu par un format particulierPeut être étendu par un format particulier
Services communs : signatures numériques
ModèleModèleLa partie La partie Signature OriginSignature Origin constitue la racine de l’ensemble des constitue la racine de l’ensemble des signatures dans le paquetagesignatures dans le paquetage
Chaque signature est localisée dans sa propre partieChaque signature est localisée dans sa propre partie
Pack
ag
e X
PS
Pack
ag
e X
PS
Rela
tionsh
ips
Rela
tionsh
ips
Common Package PartsCommon Package PartsCore Properties
Signature Origin X509 Cert
Signature
X509 Cert
Signed part Signed part Signed part Signed part
Signature ResourcesResources
Signed PartsSigned Parts
RecommendedRecommendedPartsParts
RelationshipRelationship
URI ReferenceURI Reference
OLE Property Storage Core Properties
RM
“envelo
pe”
RM
“envelo
pe”
RM LicensesRM Licenses
XPS P
ack
age
XPS P
ack
age
Rela
tionsh
ips
Rela
tionsh
ips Common Package PartsCommon Package PartsCore Properties
Signature Origin Signature X509 Cert
SignatureX509 Cert
Signed partSigned partSigned partSigned part
Gestion des droits d’usageSusceptible d’utiliser n’importe quelle solution de gestion de droits d’usageSusceptible d’utiliser n’importe quelle solution de gestion de droits d’usage
Composante externe à la spécification XPSComposante externe à la spécification XPS
Intégration avec l’infrastructureIntégration avec l’infrastructure Windows Right Management Services (RMS) Windows Right Management Services (RMS) fournie avecfournie avec WinFX WinFXLes fichiers Office system 2007 et les documents XPS supportent les même droits Read, Print, Copy, Full ControlLes fichiers Office system 2007 et les documents XPS supportent les même droits Read, Print, Copy, Full Control
Les droits RM sont maintenus lors de la sauvegarde de fichiers Office system 2007 en documents XPS, les droits RM sont automatiquement appliqués à l’ensemble des documents XPS insérés dans une bibliothèque SharePoint RM, Outlook 2007 applique automatiquement les droits RM des documents XPS lorsqu’ils sont mis en pièces jointes d’un mèl avec droits d’usageLes droits RM sont maintenus lors de la sauvegarde de fichiers Office system 2007 en documents XPS, les droits RM sont automatiquement appliqués à l’ensemble des documents XPS insérés dans une bibliothèque SharePoint RM, Outlook 2007 applique automatiquement les droits RM des documents XPS lorsqu’ils sont mis en pièces jointes d’un mèl avec droits d’usage
DémonstrationDémonstration
Inspection d’un paquetageUtilisation des utilitaires ZIP
Document XPS
Défini sur la base d’un paquetageDéfini sur la base d’un paquetageParties clé d’un document XPSParties clé d’un document XPS
FixedDocumentSequenceFixedDocumentSequence : Racine du document: Racine du documentFixedDocumentFixedDocument : : Balise documentBalise document XML XMLFixedPageFixedPage : : BaliseBalise page XML page XMLFontFont : Police de : Police de caractères intégréecaractères intégréeImageImage : : Images intégréeImages intégréeThumbnailThumbnail : Images vignette de la page : Images vignette de la pagePrintTicketPrintTicket : : Paramétrage de l’imprimanteParamétrage de l’imprimante pour la page/le document pour la page/le documentDocumentStructureDocumentStructure : Structure : Structure sémantiquesémantique du document du documentStoryFragmentsStoryFragments : Structure : Structure sémantiquesémantique de la page de la page
Relations clé d’un document XPSRelations clé d’un document XPSStartPartStartPart : Pointe vers la partie : Pointe vers la partie FixedDocumentSequenceFixedDocumentSequenceRequiredResourceRequiredResource : Image/Police de : Image/Police de caractèrescaractères nécessaire pour nécessaire pour « rendre » la page« rendre » la pagePrintTicketPrintTicket : : Paramétrage de l’imprimanteParamétrage de l’imprimante
Format des documents XPSPack
ag
e X
PS
Pack
ag
e X
PS
Rela
tionsh
ips
Rela
tionsh
ips
Common Package PartsCommon Package PartsCore Properties
Thumbnail
Signature Origin Signature X509 Cert
Fixed Payload PartsFixed Payload PartsFixedDocumentSequence
FixedDocument
FixedPage
FixedPage
DocumentStructure
FontFonts et Images
Thumbnail
Thumbnail
L’ensemble des parties est signéL’ensemble des parties est signé
ResourcesResources
OptionalOptionalPartsParts
Required orRequired orRecommendedRecommendedPartsParts
RelationshipRelationship
URI ReferenceURI Reference
APIs Document WinFX
WinFX WinFX offre à travers offre à travers Windows Presentation FoundationWindows Presentation Foundation (WPF) des (WPF) des APIs vis-à-vis des services communs aux paquetagesAPIs vis-à-vis des services communs aux paquetages
Sérialiser du contenu WPF XAML Sérialiser du contenu WPF XAML versvers XPS XPS
Créer/Utiliser des documents XPSCréer/Utiliser des documents XPS
Créer/Utiliser des paquetsCréer/Utiliser des paquets
Créer/Utiliser des documents Créer/Utiliser des documents avec des permissions restreinteavec des permissions restreinte
Utiliser des « Viewers » Utiliser des « Viewers » personnaliséspersonnalisés
Traiter des paquets
// Open existing packagePackage package = Package.Open(fileName, FileMode.Open);
// Find parts based on relationship typestring relType =
“http://schemas.microsoft.com/office/2006/relationships/officeDocument”;PackageRelationshipCollection packRels =
package.GetRelationshipsByType(relType);
// Assuming there is only one relationship of this typeIEnumerator relsEnumerator = packRels.GetEnumerator();relsEnumerator.MoveNext();PackageRelationship rel = relsEnumerator.Current;
// For this sample, fetch only the first part in this collectionPackagePart part = package.GetPart(PackUriHelper.ResolvePartUri(
new Uri(“/”, UriKind.Relative), rel.TargetURI));
// Get the stream for this partStream partStream = part.GetStream();
SSystem.Windows.Xps.Packagingystem.Windows.Xps.Packaging
Travailler avec les propriétés élémentaires
Les APIs Packaging permettent de travailler avec les Les APIs Packaging permettent de travailler avec les propriétés élémentairespropriétés élémentaires
Exemple de code – Modifier la version Exemple de code – Modifier la version
<CoreProperties xmlns=“http://schemas.microsoft.com/package/2005/06/metadata/core-properties”><Creator>Philippe Beraud</Creator><Title>Session Journées Microsoft de la Sécurité</Title><Subject>Formats de fichier XML</Subject><Category>Session</Category><Keywords>XML;XPS;Office;Format</Keywords><Description>Session JMS sur les formats de fichiers XML.</Description><ContentType>Présentation</ContentType><ContentStatus>Finale</ContentStatus><Version>1.0</Version><Revision>231</Revision><DateCreated>03/03/2006 09:15:00</DateCreated><DateModified>03/03/2006 10:15:00</DateModified><LastModifiedBy>Philippe Beraud</LastModifiedBy><LastPrinted>03/03/2006 10:15:00</LastPrinted><Language>FR-Fr</Language><Identifier>VEN01</Identifier>
</CoreProperties>
Package p = Package.Open(fileName, FileMode.Open, FileAccess.ReadWrite);p.CoreProperties.Version = "1.0a";p.Close();
Signer avec les APIs Packaging
Les APIs Package Digital Signature travaillent avec une Les APIs Package Digital Signature travaillent avec une collection de parties, de relations, et d’objets personnalisés collection de parties, de relations, et d’objets personnalisés intégrés dans la signatureintégrés dans la signature
PackageDigitalSignatureManagerPackageDigitalSignatureManagerObtenir, ajouter ou supprimer une signature depuis/dans le Obtenir, ajouter ou supprimer une signature depuis/dans le paquetagepaquetage
PackageDigitalSignaturePackageDigitalSignatureObtenir la liste des parties signées par la signatureObtenir la liste des parties signées par la signatureObtenir la liste des références vers les relations signéesObtenir la liste des références vers les relations signéesObtenir la liste des objets signés et non signés dans la Obtenir la liste des objets signés et non signés dans la signaturesignatureVérifier la signatureVérifier la signatureVérifier le certificat de signatureVérifier le certificat de signature
System.IO.Packaging / PackageDigitalSignatureManager System.IO.Packaging / PackageDigitalSignatureManager PackageDigitalSignaturePackageDigitalSignature
Signer un paquet
Exemple de codeExemple de code
using System;using System.IO.Packaging;using System.Security.Cryptography;using System.Security.Cryptography.X509Certificates;
…
Package p = Package.Open(fileName, FileMode.Open, FileAccess.ReadWrite);PackageDigitalSignatureManager dsm = new PackageDigitalSignatureManager(p);
// Get all Parts and add them to the List of Parts to be signed. Cannot pass GetParts() enumeration directly
// as it is invalidated during Sign process.List<Uri> toSign = new List<Uri>();
// No signing policy defined, just sign everythingforeach (PackagePart packagePart in p.GetParts()){ toSign.Add(packagePart.Uri);}
//Sign CollectionX509Certificate certificate = X509Certificate.CreateFromCertFile(certFilename);
dsm.Sign(toSign, certificate);p.Close();
DémonstrationDémonstration
Signatures numériques
Traiter des documents XPSLes APIs XPS Document Les APIs XPS Document remplacentremplacent les APIs Packaging pour le les APIs Packaging pour le format Document XPS format Document XPS
Adapté aux besoins spécifiques des documentsAdapté aux besoins spécifiques des documents XPS XPS
Manipuler des documents XPSManipuler des documents XPSAjouter/supprimer des documents à la séquence de documents et des Ajouter/supprimer des documents à la séquence de documents et des pages aux documents pages aux documents Récupérer ou positionner les propriétés élémentairesRécupérer ou positionner les propriétés élémentairesRécupérer ou positionner les vignettesRécupérer ou positionner les vignettes
Ajouter un contenu de pageAjouter un contenu de pageEx. couleurs, polices de caractère, images, dictionnaires de ressourcesEx. couleurs, polices de caractère, images, dictionnaires de ressourcesRécupérer ou positionnerRécupérer ou positionner les les PrintTicketsPrintTickets (XML (XML de contrôle de travail de contrôle de travail d’impressiond’impression))
GérerGérer la signature la signature numériquenumériqueSigner automatiquement en conformité avec la politique de signature Signer automatiquement en conformité avec la politique de signature Document XPSDocument XPSSpécifier les exigences de Spécifier les exigences de co-signatureco-signature
SSystem.Windows.Xps.Packagingystem.Windows.Xps.Packaging / / XpsDocumentXpsDocumentIDocumentSequenceReaderIDocumentSequenceReaderIDocumentSequenceWriterIDocumentSequenceWriterIFixedDocumentReaderIFixedDocumentReaderIFixedDocumentWriterIFixedDocumentWriterIFixedPageReaderIFixedPageReaderIFixedPageWriterIFixedPageWriter
Accéder au contenu de documents XPS
Exemple de code – Exemple de code – Fusionner des documentsFusionner des documentsFixedDocumentSequence permet de fusionner de multiple FixedDocumentSequence permet de fusionner de multiple documents en un seul document XPSdocuments en un seul document XPS
FixedDocumentSequence MergeXpsDocuments(FixedDocumentSequence[] xpsDocs){ FixedDocumentSequence docSeqOut = new FixedDocumentSequence(); foreach (FixedDocumentSequence ds in xpsDocs) { foreach (DocumentReference dr in ds.References) { DocumentReference docRef = new DocumentReference(); FixedDocument fixedDoc = new FixedDocument(); foreach (PageContent pc in dr.GetDocument(false).Pages) { PageContent pageContent = new PageContent(); FixedPage fixedPage = pc.GetPageRoot(false); ((System.Windows.Serialization.IAddChild)pageContent).AddChild(fixedPage); fixedDoc.Pages.Add(pageContent); }
docRef.SetDocument(fixedDoc); docSeqOut.References.Add(docRef); } } return docSeqOut; }
Document XPS et conformité avec des législations
Le contenu est immuable (disposition fixe)Le contenu est immuable (disposition fixe)WYSIWYG (What You See Is What You Get) – WYSIWYG (What You See Is What You Get) – Intéressant pour les Intéressant pour les scénarios d’archivage ainsi que pour la non-répudiationscénarios d’archivage ainsi que pour la non-répudiation
Le contenu est sécurisé et prévisibleLe contenu est sécurisé et prévisible Peut seulement contenu un jeu bien défini de types de contenusPeut seulement contenu un jeu bien défini de types de contenusDu code arbitraire, des macros; des média, etc. ne sont PAS Du code arbitraire, des macros; des média, etc. ne sont PAS autorisésautorisés
Support des signatures numériques et de Windows Rights Support des signatures numériques et de Windows Rights Management (RMS)Management (RMS)
Protection de l’information sensibleProtection de l’information sensibleDes politiques d’entreprise peuvent être imposées même lorsque Des politiques d’entreprise peuvent être imposées même lorsque les documents quittent ses frontièresles documents quittent ses frontièresMaintien de l’authenticité, de l’intégrité et de la confidentialité du Maintien de l’authenticité, de l’intégrité et de la confidentialité du documentdocument
Signatures numériques des documents XPS
Systems.Windows.Xps.Packaging / XpsDigitalSignatureSystems.Windows.Xps.Packaging / XpsDigitalSignatureSystem.Security.Cryptography.X509Certificates System.Security.Cryptography.X509Certificates
Signer au niveau document XPS (aucune exclusion)
using System;using System.Windows.Xps.Packaging;using System.Xml;using System.Security.Cryptography;using System.Security.Cryptography.X509Certificates;
…
XpsDocument document = new XpsDocument(fileName, FileAccess.ReadWrite);
X509Certificate certificate = X509Certificate.CreateFromCertFile(certFilename);
document.SignDigitally(certificate, true, XpsDigSigPartAlteringRestrictions.None);
…
foreach (XpsDigitalSignature digitalSignature in document.Signatures){ if (digitalSignature.Verify() == System.IO.Packaging.VerifyResult.Success){ Console.WriteLine("The digital signature was applied successfully!"); break;}
Exemple de codeExemple de code
Publier un document XPS avec droits d’usage
Les APIs Packaging supportent la notion de paquetage chiffréLes APIs Packaging supportent la notion de paquetage chiffré
Intégration avec l’infrastructureIntégration avec l’infrastructure Windows Right Management Windows Right Management Services (RMS) Services (RMS) fournie avecfournie avec WinFX WinFX
L’API « enveloppe » l’API RMS L’API « enveloppe » l’API RMS v1.0 SP1 v1.0 SP1 en code natifen code natif
Exemple de codeExemple de codeusing System;using System.Windows.Xps.Packaging;using System.Xml;using System.Security.RightsManagement;using System.Security
…
// Build Unsigned publish license UnsignedPublishLicense publishLicense new UnsignedPublishLicense();unsignedPublishLicense.Grants.Add(new ContentGrant(new
ContentUser("[email protected]", AuthenticationType.Windows), ContentRight.Owner));
ContentUser author = new ContentUser("[email protected]", AuthenticationType.Windows);
unsignedPublishLicense.Owner = author;
unsignedPublishLicense.ValidFrom = new DateTime(…);unsignedPublishLicense.ValidUntil = new DateTime(…);…
System.Securitry.RightsManagement / UnsignedPublishLicenseSystem.Securitry.RightsManagement / UnsignedPublishLicense
Systems.IO.Packaging / EncryptedPackageSystems.IO.Packaging / EncryptedPackage
Publier un document XPS avec droits d’usage
Exemple de code (suite)Exemple de code (suite)// Build Secure Environementstring appManifest = "<manifest></manifest>";
SecureEnvironment secureEnv = null;if (SecureEnvironment.IsUserActivated(author)) SecureEnvironment secureEnv = SecureEnvironment.Create(appManifest, author); Else SecureEnvironment secureEnv = SecureEnvironment.Create(appManifest, author.AuthenticationType, UserActivationMode.Permanent);
// Sign the Unsigned Publish License to build the Publish License UseLicense authorUseLicense;PublishLicense publishLicense = unsignedPublishLicense.Sign(secureEnv, out
authorUseLicense);
// Bind the author’s Use LicenseBindingFailure errorCode; CryptoProvider cryptoProvider = authorUseLicense.Bind(secureEnv, out errorCode);
// Create a EncryptedPackage object to RM the contentsStream packageStream = File.OpenRead(xpsExistingFile);EncryptedPackageEnvelope ePackage =
EncryptedPackageEnvelope.CreateFromPackage(xpsNewFile, packageStream, publishLicense, cryptoProvider);
// Add a Use License for the authorRightManagementInformation rmi = ePackage.RightManagementInformation;Rmi.SaveUseLicense(author, authorUseLicense);
ePackage.Close();…
Consommer un document XPS avec droits d’usage
Exemple de codeExemple de codeusing System;using System.Xml;using System.Security.RightsManagement;using System.Security…
ContentUser currentUser = new ContentUser("[email protected]", AuthenticationType.Windows);
// Build Secure Environement SecureEnvironment secureEnv = null;if (SecureEnvironment.IsUserActivated(currentUser)) SecureEnvironment secureEnv = SecureEnvironment.Create(appManifest, currentUser); else SecureEnvironment secureEnv = SecureEnvironment.Create(appManifest, currentUser.AuthenticationType, UserActivationMode.Permanent);
if (!EncryptedPackageEnvelope.IsEncryptedPackageEnvelope(xpsFile)) return;EncryptedPackageEnvelope ePackage = EncryptedPackageEnvelope.Open(xpsFile,
FileMode.Read);RightManagementInformation rmi = ePackage.RightManagementInformation;
String embeddedUseLicense;UseLicense userLicense = rmi.LoadUseLicense(currentUser);if (userLicense == null){ // Acquire Use License PublishLicense publishLicense = rmi.LoadPublishLicense(); useLicense = publishLicense.AcquireUseLicense(secureEnv); }
Consommer un document XPS avec droits d’usage
Exemple de code (suite)Exemple de code (suite)
// Bind Use License BindingFailure errorCode; CryptoProvider cryptoProvider = useLicense.Bind(secureEnv, out errorCode);if (cryptoProvider != null) { foreach(ContentGrant grant in cryptoProvider.BoundRights) { … }
if (cryptoProvider.CanDecrypt) { byte[] clearText = cryptoProvider.Decrypt(byte[] ePackage.GetPackage()); … }}else{ // Handle the BindingFailure error code here }
Windows Workflow Foundation (WF)Technologie WinFX de Workflows Technologie WinFX de Workflows commune pour les produits Microsoft, les commune pour les produits Microsoft, les solutions tierces, etc.solutions tierces, etc.Framework extensible pour la Framework extensible pour la construction de Workflows au sein des construction de Workflows au sein des applications Windowsapplications Windows
Ni un serveur ou une applicationNi un serveur ou une applicationFonctionnalités cléFonctionnalités clé
Modèle unifié pour les Workflows humain Modèle unifié pour les Workflows humain et systèmeet système
Les Workflows sont un ensemble d’activitésLes Workflows sont un ensemble d’activitésLes activités sont les éléments constituantsLes activités sont les éléments constituantsLes tâches sont des activités humaines Les tâches sont des activités humaines Les Workflows s’exécutent dans un Les Workflows s’exécutent dans un processus hôte : tout serveur ou applicationprocessus hôte : tout serveur ou application
Framework extensible d’activitésFramework extensible d’activitésPossibilité de construire ses propres Possibilité de construire ses propres bibliothèques d’activitésbibliothèques d’activités
Concepteur visuel pour l’édition graphique Concepteur visuel pour l’édition graphique et de codeet de code
DisponibilitéDisponibilitéIntégré dans le Runtime WinFXIntégré dans le Runtime WinFXA la base des Workflows Office system A la base des Workflows Office system 20072007
WorkflowWorkflow
Concepteur visuelConcepteur visuel
ActivitéActivité
Bibliothèque d’activités Bibliothèque d’activités personnaliséespersonnalisées
Bibliothèque d’activités Bibliothèque d’activités élémentairesélémentaires
Moteur d’exécutionMoteur d’exécution
Services d’exécutionServices d’exécution
Win
dow
s W
indow
s W
ork
flow
W
ork
flow
Fo
undati
on
Fou
ndati
on
Processus HôteProcessus Hôte
Automatisation du cycle de vie des documents
Les nouvelles APIs Document WPF offrent aux activités un Les nouvelles APIs Document WPF offrent aux activités un accès transparent aux paquets et documents XPS, qu’il accès transparent aux paquets et documents XPS, qu’il s’agisse du contenu, des ressources ou encore de la s’agisse du contenu, des ressources ou encore de la protectionprotection
Ces APIs autorisent la création d’activités qui automatisent Ces APIs autorisent la création d’activités qui automatisent la gestion du cycle de vie des documentsla gestion du cycle de vie des documents
Pages FiligranePages Filigrane
Obtenir une page, une image, une vignetteObtenir une page, une image, une vignette
Editer (Trouver une chaîne et Remplacer)Editer (Trouver une chaîne et Remplacer)
Ajouter/Obtenir/Supprimer des propriétés élémentairesAjouter/Obtenir/Supprimer des propriétés élémentaires
Imprimer des documents XPSImprimer des documents XPS
Assembler de multiples documents XPSAssembler de multiples documents XPS
Signer avec la politique de signatureSigner avec la politique de signatureAjouter une demande de signatureAjouter une demande de signature
Vérifier des signatures Vérifier des signatures
Appliquer des droits d’usageAppliquer des droits d’usageDéfinir qui dispose de quel(s) droit(s) sur les documents paquetés au Définir qui dispose de quel(s) droit(s) sur les documents paquetés au fur et à mesure que le Workflow progressefur et à mesure que le Workflow progresse
Positionner une date d’expiration pour accéder aux documentsPositionner une date d’expiration pour accéder aux documents
Ouvrir un document avec des droits d’usageOuvrir un document avec des droits d’usage
En guise de conclusion
Le paquet partagé réduit considérablement la complexité de Le paquet partagé réduit considérablement la complexité de gérer des documents XPS/Office system 2007/tierces partiesgérer des documents XPS/Office system 2007/tierces parties
Avec à la clé une réduction substantielle des coûts d’ingénierie Avec à la clé une réduction substantielle des coûts d’ingénierie via l’utilisation des APIs WPF pour la gestion des fichiers plutôt via l’utilisation des APIs WPF pour la gestion des fichiers plutôt que de développer une API propreque de développer une API propre
Les documents XPS répondent complètement aux usages Les documents XPS répondent complètement aux usages des « papiers électroniques »des « papiers électroniques »
L’utilisation des documents XPS est une voie facile pour L’utilisation des documents XPS est une voie facile pour assembler, sécuriser, partager et archiver un contenuassembler, sécuriser, partager et archiver un contenu
Les nouvelles APIs WPF permettent d’automatiser le Les nouvelles APIs WPF permettent d’automatiser le contenu et les tâches de gestioncontenu et les tâches de gestion
Les nouvelles APIs WPF et WF créent de nouvelles Les nouvelles APIs WPF et WF créent de nouvelles opportunités dans l’automatisation de la gestion du cycle de opportunités dans l’automatisation de la gestion du cycle de vie de documentsvie de documents
Définition d’activités WF comme blocs constituants de Définition d’activités WF comme blocs constituants de Workflows documentairesWorkflows documentaires
Pour plus d’informations sur les packages et XPS
Page d’accueilPage d’accueil XML Paper Specification XML Paper Specification
http://www.microsoft.com/whdc/xps/default.mspxhttp://www.microsoft.com/whdc/xps/default.mspx
Open Package Specifications v0.8 December 2005Open Package Specifications v0.8 December 2005http://www.microsoft.com/whdc/xps/xpspkg.mspxhttp://www.microsoft.com/whdc/xps/xpspkg.mspx
XML Paper Specification v0.8 December 2005XML Paper Specification v0.8 December 2005http://www.microsoft.com/whdc/xps/xpsspec.mspxhttp://www.microsoft.com/whdc/xps/xpsspec.mspx
Document Workflow Advances in Windows VistaDocument Workflow Advances in Windows Vistahttp://www.microsoft.com/whdc/xps/XPSworkflow.mspxhttp://www.microsoft.com/whdc/xps/XPSworkflow.mspx
Posez vos questions surPosez vos questions sur [email protected]@microsoft.com
Pour plus d’informations sur les APIs WinFX
Page d’accueil WinFXPage d’accueil WinFXhttp://msdn.microsoft.com/winfxhttp://msdn.microsoft.com/winfx
Bêta WinFXBêta WinFX
http://msdn.microsoft.com/windowsvista/getthebeta/default.aspxhttp://msdn.microsoft.com/windowsvista/getthebeta/default.aspx
WinFX System.IO.Packaging NamespaceWinFX System.IO.Packaging Namespacehttp://windowssdk.msdn.microsoft.com/library/en-us/cpref12/html/http://windowssdk.msdn.microsoft.com/library/en-us/cpref12/html/n_system_io_packaging.aspn_system_io_packaging.asp
WinFX System.Windows.Xps.PackagingWinFX System.Windows.Xps.PackagingNamespaceNamespace
http://windowssdk.msdn.microsoft.com/library/en-us/cpref35/html/http://windowssdk.msdn.microsoft.com/library/en-us/cpref35/html/n_system_windows_xps_packaging.aspn_system_windows_xps_packaging.asp
Windows Presentation Foundation Windows Presentation Foundation Hands-On-LabsHands-On-LabsProgramming XPS Documents, WinFX Printing and Archiving, Programming XPS Documents, WinFX Printing and Archiving, Extending the XPS Document Viewing ExperienceExtending the XPS Document Viewing Experience
http://msdn.microsoft.com/windowsvista/building/presentation/http://msdn.microsoft.com/windowsvista/building/presentation/hands_on_lab/default.aspxhands_on_lab/default.aspx
Pour plus d’informations sur les formats Office Open XML
Page d’accueil Office system 2007 PreviewPage d’accueil Office system 2007 Previewhttp://www.microsoft.com/office/previewhttp://www.microsoft.com/office/preview
« « The Microsoft Office Open XML Formats The Microsoft Office Open XML Formats »»http://download.microsoft.com/download/E/3/D/E3DD6FED-0CC1-http://download.microsoft.com/download/E/3/D/E3DD6FED-0CC1-4788-A742-E1596179AE65/FileFormatsPreview.doc4788-A742-E1596179AE65/FileFormatsPreview.doc
« « Microsoft Office Open XML Formats Frequently Asked Microsoft Office Open XML Formats Frequently Asked Questions Questions »»
http://www.microsoft.com/office/preview/developers/filefaq.mspxhttp://www.microsoft.com/office/preview/developers/filefaq.mspx
Office 2003 XML Reference Schemas Office 2003 XML Reference Schemas http://www.microsoft.com/office/xmlhttp://www.microsoft.com/office/xml
Visitez le blog de Brian Jones : Visitez le blog de Brian Jones : http://blogs.msdn.com/Brian_Joneshttp://blogs.msdn.com/Brian_Jones
Microsoft FranceMicrosoft France18, avenue du Québec18, avenue du Québec
91 957 Courtaboeuf Cedex91 957 Courtaboeuf Cedex
www.microsoft.com/france
0 825 827 8290 825 827 829
[email protected]@microsoft.com