Le Post de MCNEXT

Les articles des consultants de MCNEXT

[Build 14] – Windows Phone 8.1 Security Features

Mail de John
Samedi 5 avril 2014 20:33

 

Windows Phone 8.1 Security Features 

 

Les objectifs :
- Minimiser le temps nécessaire aux utilisateurs de ré-entrer leurs identifiants
- Offrir aux développeurs un modèle de programmation riche
- Transformer le téléphone en un appareil d’authentification

Microsoft Account :
- Suppression du vieux protocole d’authentification du Windows Phone hérité de Windows Mobile et remplacement par celui de WinRT
- C’est le principal fournisseur d’identité sur Windows Phone
- La majorité des utilisateurs sont authentifiés avec leur compte MSA
- Ajout du Single Sign ON
- Windows.Security.Authentication.OnlineId est le namespace pour ces nouvelles API
- Convergés avec Windows

Avantages de MSA :
- Roaming des données entre les appareils
- Les utilisateurs n’auront probablement pas besoin de ré-entrer leurs identifiants
- MSA évolue indépendamment de l’OS
- Meilleure robustesse et sécurité

Trois options pour utiliser MSA :
- OnlineId – Meilleure méthode
- Web Authentication Broker (OAuth)
- Live SDK – Permet d’accéder à OneDrive

Démonstration d’une authentification utilisant OnlineId

Web Authentication Broker

Description du fonctionnement du processus d’authentification OAuth avec schemas à l’appui.
Auparavant avec une webview :
- Pas de single sign-on
- Pas d’isolation des identifiants
- Ne fonctionne pas dans les cas de faible mémoire

Maintenant avec le WAB :
- Utilisation de OAuth
- Avantages
o Single Sign On
o API simple
o Isolation des identifiants
- Windows.Security.Authentication.Web
- API similaire à Windows mais optimisée pour les situations à faible mémoire

Démonstration du Web Broker et du « Continuation Pattern »

Stockage des identifiants :
- Utilisation du Credential Locker
- Windows.Security.Credentials
o PasswordVault
o WebAccount non supporté sur Phone
- Roaming des identifiants avec le Credential Locker

Crypto et certificats :
- Convergence avec WinRT
- Nouveaux namespaces

Virtual Smart Card :
- Autorise l’authentification “two factor” pour le S/MIME et les scenarii de navigation sécurisée
- Les clefs d’authentification sont liées au matériel et ne peuvent être accéder tant que l’utilisateur n’a pas fourni son code PIN
- VSC est construit au-dessus de TPM (Trusted Platform Module)

Présentation de l’architecture de VSC
Démonstration de VSC

Applications sur carte SD :
- Pas d’API mais les développeurs peuvent désactiver le stockage de leurs applications sur carte SD depuis le manifest
- Cryptage des fichiers de l’application sur la carte SD (différentes clefs entre le programme et les données de l’application)
- Contrôle d’accès pour FAT
John

[Build 14] – Dealing with Data : Storage, Roaming, and Backup on Windows and Windows Phone

Mail de John
Samedi 5 avril 2014 20:32
Dealing with Data : Storage, Roaming, and Backup on Windows and Windows Phone
Les problèmes à résoudre :
- Chaque localisation a une API différente
- Les interactions avec les localisations des utilisateurs sont limitées.
- Créer des applications cross-device est difficile.
- Les données précieuses des données sont piégées dans les vieux appareils des utilisateurs

StorageFile and StorageFolder :
- La plupart des contenus des fichiers sont gérés par ces classes
o Fichiers/Dossiers locaux
o File activation
o Media libraries
o Share contract
o Pickers
- Les métadonnées disponibles varient par fichier.

Description du modèle de fichiers :
- Roaming
- Local
- LocalCache
- Temp

Dans Windows Phone 8, les fichiers existants dans l’IsolatedStorage sont disponibles avec l’API WinRT.


Accéder aux contenus de l’utilisateur

Les données de l’utilisateur sont exposées via KnownFolders (RemovableDevices, MusicLibrary, PicturesLibrary, VideosLibrary) et protégées par des capabilities.


Access Cache

Il est utilisé pour maintenir l’accès aux fichiers partagés (file activation, share contract, file picker). Il est mémorisé par le système même après une suppression. Il faut quand même copier le fichier si on veut le modifier.


Storage for Windows Phone Silverlight 8.1

Nouveau modèle de données :
- Roaming/Temp/Local
- IsolatedStorage == Local Folder
- IsolatedStorage APIs fonctionnent toujours

Les KnownFolders APIs sont disponibles pour les media et cartes SD. Les API XNA fonctionnent toujours.
Démonstration (Stockage de fichiers, CommonFileQuery, Pagination, Possibilité de préciser dans l’émulateur un dossier simulant une carte SD).

Roaming
OneDrive stocke jusqu’à 100Ko, si la taille est supérieur la synchronisation s’arrête. La synchronisation entre Windows 8 et Windows Phone fonctionne.

Bonnes pratiques pour le roaming :
- Settings
- Rester sur des types WinRT
- Eviter les dépendances entre le roaming et les fichiers

Démonstration du roaming entre une application Windows et une application Windows Phone (attention il faut que les appxmanifest des deux applications aient le même PackageFamilyName)

Backup/Restore
Les données du dossier AppData sont sauvegardées une fois par jour et ce même si le Roaming est désactivé. OneDrive ne maintient qu’un seul Backup par device et par application. La taille du backup compte dans la taille du stockage OneDrive de l’utilisateur.

La fonctionnalité de sauvegarde est activée par défaut pour toutes les applications 8.1 mais pas pour les applications 8.0 ou pour les applications d’entreprise ou side-loadée. On peut désactiver ce backup soit en sauvegardant le contenu dans le dossier LocalCache ou en décochant la fonctionnalité dans le manifest.

Startscreen
Dans Windows Phone 8.1 le StartScreen avec ses tuiles est aussi sauvegardé et peut donc être restauré suite à une installation. Certaines tuiles peuvent faire références à des fichiers du stockage local qui n’existeraient plus suite à une restauration. Il faut donc s’assurer que les applications que l’on développe ne plantent pas dans ce cas.
John

 

[Build 14] – IE11′s developer tools just got nicer

Mail de Mehdi
Samedi 5 avril 2014 11:00
IE11′s developer tools just got nicer 
Speaker : Andy Sterland
On commence directement par une démo.

Nouveautés : on a un maintenant un bouton step qui nous permet de faire un step et ne debugger que notre code sans accéder aux bibliothèques (jquery par exemple) cette fonction est configurable par défaut sur les fichiers mimifé, sinon on peut choisir les fichiers js qu’on définit comme librairie ou pas.

Maintenant nous avons la possibilité de faire un break dans les exceptions déclenchées par notre code et d’ignorer les exceptions des librairies.

Le debug des fichiers type script fonctionne !!! Plus besoin de passer le code JavaScript généré ! Il existe un bouton pour faire le passage entre les fichiers TS et les fichiers JS.

Le debugger garde maintenant les paramètres même si on ferme la page courante !
(exemple : plusieurs points d’arrêts dans un fichier JS => on ferme notre page => on la ré ouvre => on ouvre le debugger avec F12, nos breaks points sont toujours là !)

Avec console.log on peut inspecter un objet maintenant !

Les erreurs peuvent être enregistrées même avant l’ouverture de la console.

Nouvelle commande dans la console « $_ » pour récupérer la dernière expression.

On passe au dom explorer : Nouveauté : on a des indicateurs avec des couleurs pour les changements dans les css (orange = modifier, rouge = supprimer, vert= nouvelle)

On un onglet « changes » qui rassemble aussi les changements des css qu’on a appliqué en live ! Le copier-coller des valeurs dans cet onglet permet de recopier les bonnes valeurs = ce qui est modifié est gardé ce qui est supprimé est effectivement supprimé dans le copier (cool !)

Maintenant on peut forcer le mode hover et visited dans le dom !

On passe rapidement sur WP, une seule info à retenir, on a accès aux mêmes options de debug.
Mehdi

[Build 14] – Avoiding Windows Store App Failures

Mail de Mehdi
Samedi 5 avril 2014 10:35
Avoiding Windows Store App Failures
Speakers : Andrew Richards, Maarten Van De Bospoort
Getting your failures

Le speaker nous dit que pour relever les erreurs de l’application, le developpeur doit activer l’option telemetry data dans la section account info du dashbord du store.

Toujours dans le dashboard, dans les détails d’une application nous trouvons plusieurs graphiques qui représentent les données de l’appli (crash, unresponsaive, javascript errors …)

Le speaker nous montre l’outil (WinDbg) pour ouvrir et analyser les fichiers de report de crash (dmp) mais le speaker tape plein de commandes compliquées (il faut revoir la vidéo pour suivre cette partie) …

Ensuite on passe sur un slide avec le top des exceptions CLR.

La plus fréquente est Null reference et nous montre comment la gérer avec un if obj !=null (commentaire perso : youpi, une session pour voir ça …)

Il nous alerte sur le fait que quand on fait des appels web, on tombera tôt ou tard sur des exceptions. Donc il faut faire attention.

Il nous parle aussi des exceptions du parseur XML (une des plus fréquentes) il faut bien gérer les try catch.

Il nous montre comment bien gérer correctement les Baground tasks (avec une note : si un crash se produit ici, aucune information ne peut remonter vers les serveurs de MS)

Ensuite on nous dit quand on enregistre l’état de l’application avant le suspend, il faut faire attention parce qu’il y a des objets qu’on ne peut pas sérialiser et du coup cela provoque une exception.

Mehdi

[Build 14] – App packaging and deployment for windows

Mail de Mehdi
Samedi 5 avril 2014 10:17

App packaging and deployment for windows


Speaker
: Barclay Hill, Jason Salameh


Premières nouveautés
:
Seulement les ressources nécessaires (fichier de localisation, images seront téléchargées (on nous annonce un gain de 10% ou plus au niveau du stockage)

Pour les images, le système est capable de choisir quel scale d’image il lui faut.

Le speaker nous montre un projet universal app, plus précisément les manifets des projets puis, il génère une app phone, il nous montre les bundle (comme quoi ce n’est pas obligatoire mais que ça serre à optimiser les packages)

Les applications Silverlight sont générées toujours avec un xap mais sont déployés comme un appx (en plus du manifest normal on a un manifest du style Windows 8)

La création d’une application WP 8.0 est toujours possible.

Les mises à jour de 8 à 8.1 et de 8.1 Silverlight vers universal app est dans un seul sens, pas de retour en arrière possible.

Avec les applications Silverlight on joue avec deux manifest, dans cet exemple, le speaker change le mode de notification et le passe vers du WNS (dans le manifest silverlight) on voit alors que des options disparaissent, ce qui est normal puisque c’est le nouveau manifest (type Windows) qui gère ça.

Pour les nouvelles features, elles sont toutes gérées dans le nouveau manifest.

Dans le store, on peut maintenant réserver un nom d’application pour toute la « famille » phone/windows en même temps.

On parle maintenant des améliorations de stockage :

On peut partager des fichiers entre applications !
Résultat, on consomme de 10 à 25 % de mois en disque. Le speaker nous conseille de ne pas minifier les fichiers (exemple de jQuery) pour que toutes les applications qui l’utilisent, prennent un seul fichier commun.

Les utilisateurs peuvent maintenant installer des applications sur carte SD, les applications peuvent être encryptées et les développeurs peuvent interdire l’installation des apps sur les cartes SD avec une option dans le manifest.

C’est l’utilisateur qui choisit ou il installe les applications par défaut depuis l’application storage sence.

Il nous montre un exemple d’appli lourde (Halo) qui tourne très bien sur une carte SD (milieu de gamme) avec un téléphone bas de gamme.

Mehdi

[Build 14] – Windows Runtime for Windows Phone Developers

Mail de Mehdi
Vendredi 4 avril 2014 10:31

Windows Runtime for Windows Phone Developers

// Speakers : Doug Holland, Jerry Nixon

On débute la session par un petit Historique de WP (7.0 Silverlight, 7.5 Silverlight, 7.8 Silverlight, 8.0 Silverlight, 8.1 Silverlight et maintenant WinRT)
Le speaker commence par nous dire pourquoi nous devons rester sur du Silverlight : Beaucoup d’investissement (une base importante de code) utilisation de certaines API toujours pas disponible avec WinRT (exemple : VoIP, Lock Screen WP) et que Microsoft respecte nos investissements et que Silverlight pour WP continuera à être supporté/amélioré en parallèle que WinRT.

Ensuite il nous dit pourquoi nous devons re targeter nos applications en Silverlight 8.1. La réponse est simple : pour avoir accès à plusieurs nouvelles API (accès à la carte SD, GeoFencing, App Sharing)

Et enfin, il nous dit dans quel cas nous pouvons/devons choisir WinRT. Et là aussi la réponse est plutôt simple : plus de convergences (avec Windows) nouveaux contrôles (lesquels ? aucune présentation) choix de langage …

Petit rappel sur le async await (avec comme règle toute méthode qui dépasse les 50 millisecondes doit être en asynchrone pour ne pas bloquer l’interface et c’est ce qui fait dans WinRT).

Si on choisit le développement avec WinRT le speaker nous présente plusieurs API qui ne sont plus disponibles et qui sont généralement remplacées par l’API équivalente sur Windows.

Si on utilise Microsoft.Phone.Task :
- MarketplaceReviewTask n’est plus disponibleet doit être remplacé par un lacement d’une uri qui redirige vers le store
- Même chose pour le MarketplaceSearchTask
- Le WebBrowserTask est remplacé par Windows.System.Lancher.LanchUri
- AdressChooserTask remplacé par Windows.ApplicationModel.Contacts.ContactPicker
- PhoneCallTask remplacé par Windows.ApplicationModel.Cells.PhoneCallManager
- SmsComposeTask remplacé par Windows.ApplicationModel.Chat.ChatMessageManger
Microsoft.Phone.BackgroundAgent est remplacé par BackgroundTask (comme sur windows 8) avec plus de features.

La navigartion sur WP ne se fait plus par chemin, mais par type de page (comme sur windows 8)

Le bouton back ne ferme plus automatiquement l’application.

Les fichiers de localisation sont maintenant de resw en XAML nous avons maintenant x : UId l’identifiant qu’on utilise uniquement dans ces fichiers. On peut spécifier une propriété genre LeUidDunElement.text ou LeUidDunElement.Foreground.

Dernier point de la session, on nous reparle de la particularité du fileOpenPicker, quand on l’utilise on quitte l’application (elle passe donc en suspended voir elle est tuée par l’OS) donc quand on sélectionne un fichier l’application est relancée on passe par l’event activeted avec en arguement l’activation par fichier.
Mehdi

[Build 14] – Modern Camera and Imaging Apps in Windows and Windows Phone

Mail de Mehdi
Vendredi 4 avril 2014 10:31

Modern Camera and Imaging Apps in Windows and Windows Phone
// Speakers :
Jeff Day, Rene Schulte
// On nous présente les nouveautés de la fonction caméra.
Première constatation (comme dans les autres sessions) l’API de caméra se cale maintenant sur celle de windows.

Windows.media.capture

On peut toujours utiliser l’ancienne api, mais elle n’est disponible que pour les applis Silverlight.
Nouveautés :
- On peut enregistrer une (des) photo(s) durant une vidéo.
- Full acess video library i/o access
- HDR
CameraCaptureUI n’est pas disponible sur téléphone on passe plutôt avec le fileopenpicker qui nous permet soit de récupérer une photo de la pellicule ou capturer une nouvelle photo.

Le workflow est donc différent pour les appli Windows phone, pas de async await, mais plutôt on « quitte » l’appli pour ouvrir le fileopenpiker ensuite quand on revient vers l’appli l’event activated est déclenché, il faut donc faire les branchements qu’il faut pour gérer cela.

Pour de la capture en temps réel le partage de code est possible puisqu’on utilise une UI spécifique qu’il faut développer.
La nouvelle api nous donne accès à de nouvelles fonctionnalités comme la brillance le zoom le focus le contraste …
Avec ScreenCapture, on peut maintenant capturer en vidéo ce qui se passe dans l’application (valable uniquement sur phone).
Deux démos :

- La première « basic capturing » exemple de capture vidéo sur windows et WP.

- La deuxième un peu plus avancé ou le speaker nous montre comment coder une capture avec le mode HDR qui n’est disponible que sur WP (et que sur certains téléphones avec une puce spécifique, les téléphones actuels ne seront pas forcement supportés cela dépendra du driver, et donc du constructeur) pour l’instant aucun téléphone ne le supporte, il n’y a que le simulateur qui le fait :-) . C’est au développer de vérifier la disponibilité de cette fonction dans le code, aucun flag n’est présent dans le manifest pour alerter l’utilisateur de cette capacité spécifique.

 

Mehdi

[Build 14] – Windows Phone Enterprise Management

Mail de Mehdi
Vendredi 4 avril 2014 10:31

Windows Phone Enterprise Management

// Speaker : Katharine Holdsworth

Cette session pointe la sécurité qui entoure un Windows Phone 8.1 dans le monde de l’entreprise

Le but est simple donné la possibilité d’être productif partout (donc avec le téléphone) mais surtout donner le contrôle à l’IT pour gérer complètement le téléphone.

Quelques features inclus dans WP 8.1 :
- Mobile Device Management
- Configuration management
- Certificate management
- Application mangement
- Secure Access
- S/MIME

Management lifecycle :de l’inscription (Enrollment) à la « désinscription »

- Enrelement :
Construit sur le protocol de Windows Phone 8
Inscription très simple pour l’utilisateur final (avec le support du web auth broker)
Windows Intune & MDM ( qui sont flexible et customisable)

Avec Windows Phone 8.1 nous avons toutes les possibilités pour augmenter la productivité et la sécurité des téléphones. (Fourniture d’un compte mail, déploiement des certificats, règles sur le vpn les réseaux wifi/cellulaires, l’écran de verrouillage …) tout cela avec du push.


La liste des règles que l’IT peut appliquer est assez développée avec beaucoup de nouveautés
:

BUILD 2014

Le téléphone peut être encrypter avec bitlocker.

Les applications peuvent être installées sur une carte SD, elles sont encryptées, les photos vidéos ne le sont pas. L’IT peut désactiver l’utilisation de la carte SD.

Support de l’authentification Wifi pour entreprise (PEAP-MSCHAPv2 EAP-TLS EAP-TTLS). L’IT peut appliquer plusieurs règles aux Wifi.

Le réseau VPN peut aussi être configuré à distance (comme toutes ses features) avec aussi plusieurs règles particulaires.

Les mails possibilité d’envoyer et de recevoir des mails cryptés,

Support des règles d’exchange & SMIME (Exchange Server 2007 R2, mais MS recommande Exchange Server 2010 ou sup)

Nouveautés des règles Exchange ActiveSync

BUILD 2014

L’IT peut appliquer plusieurs règles sur les applications (interdire certaines applications, voir interdire le store, désactiver le side loading, désactiver IE) Il peut faire du push d’applications (installation, mise à jour et suppression).
L’IT peut restreindre ce que l’utilisateur peut voir (nous avons eu droit à un exemple avec la page système dans paramètres ou on ne voit que le workplace, la luminosité et la data) il peut aussi contrôler le lock screen, customisé le thème.


Les nouveautés
:

BUILD 2014

L’utilisateur peut désactiver l’enrelement (si l’IT l’autorise) et revenir à un environnement sans restrictions.
Les applications/configurations/mails/data de l’entreprise seront automatiquement supprimées.
Mehdi

 

[Build 14] – Building a Converged Phone and PC App using HTML and JavaScript

Mail de Mehdi
Vendredi 4 avril 2014 10:25

Building a Converged Phone and PC App using HTML and JavaScript
// Speakers : Ryan J. Sakva et Josh Williams
Le sujet de la session est la création d’une universal app (Windows 8.1 et Windows Phone 8.1) avec WinJS

Au début de la session on nous montre qu’il faut deux defaut.html pour référencer les deux versions de WinJS (phone 2.1 et Windows 2.0)

Le dom explorer fonctionne avec le simulateur windows phone exactement comme avec windows 8.

// Première partie :
Le cycle de vie d’une application avec les différents événements (activeted, checkpoint, settings et error)
Dans l’event checkpoint c’est là où généralement c’est le moment où l’application passe en suspend, on doit donc enregistrer les données de l’appli ici pour pouvoir les restaurer à la réactivation de l’appli (dans l’event activeted)
Settings
Error

// Démo :
- Création d’une listView avec un template pour les items on nous montre comment brancher l’event clique sur un élément de la liste et comment passer un objet dans la navigation (exactement le même code que pour Windows 8.1)
- On nous explique comment styler un item dans une listeView (aucun changement par rapport à WinJS 2.0)

- Maintenant on passe à l’appBar toujours le même code

- On nous rappelle qu’il faut bien scopé les css, parce qu’au fur et à mesure de la navigation les pages de styles se chargent dans le dom sans se décharger (single page).

- On créer une nouvelle page avec un HubControl, des HubSections et un repeater (pour l’instant la page est dans le projet Shared (je pense que cela ne marchera pas pour l’appli Windows Phone et on va probablement déplacer cette page dans les projets spécifiques et créer une page spéciale avec un Pivot)

- On nous parle très rapidement des promises avec la fonction join mais rien de nouveau cela fonctionne exactement de la même manière que dans WinJS 2.0
Le speaker lance l’appli Windows 8.1 => tout fonctionne correctement.

// Ensuite le speaker lance l’appli sur le simulateur Windows phone et j’avais presque raison : l’application marche correctement, mais le hubcontrol n’est pas adapté pour Windows phone (le speaker dit qu’ils n’ont pas eu le temps de l’adapter) et donc comme prévu il crée une copie de cette page dans chaque projet (Windows et WP) et le supprime du projet shared. Il utilise pour la page WP le control pivot. Il essaye de le styler en JavaScript directement mais la démo ne marche pas (probablement une erreur de syntaxe dans la media query).

Fin de la session.
Mehdi

 

 

 

[Build 14] – What’s new with Windows Phone Silverlight Apps !

Mail de John
Vendredi 4 avril 2014 06:11

What’s new with Windows Phone Silverlight Apps!

 

Différences entre les applications XAML et les applications Silverlight.
Le framework XAML est le framework du futur. C’est là où les prochaines mises à jour auront lieu. Mais le framework Silverlight continuera à être mis à jour quelques temps afin de suivre les évolutions du framework XAML pour les applications existantes.

La convergence entre les API est de l’odre de 90%.


Cependant certaines API n’ont pas encore migrées :

- Lenses
- VOIP
- Camera Capture Task
- Clipboard
- Lockscreen Wallpaper
- Ringtone et Alarmes
- Simple sound effects (XNA)
- Photos Extensibility
- Search Extras

 

On enchaîne par une démonstration de la migration d’une application Silverlight 8.0 vers Silverlight 8.1

Les applications Silverlight 8.1 s’exécutent dans le même contexte que les applications WinRT. Pour cette raison, les applications Silverlight 8.1 disposent maintenant d’un fichier appxmanifest en plus de l’historique fichier WMAppManifest.xml. Les deux doivent être mis maintenus à jour.

Lorsque l’on migre en 8.1 il y a quelques « breaking changes » :

- CLR/Silverlight bug fixes
o Array.Sort (IntrospectiveSort à la place du QuickSort)
o DateTime.Parse (correction de bugs)

- Différences au niveau de contexte d’exécution des applications WinRT
o Fast App Resume est activé par défaut (resume vs replace)
o Appuyer sur back ferme l’application, à la différence des Universal Apps, mais il existe une API spéciale qu’il est recommandé d’utiliser pour que les applications Silverlight 8.1 fonctionnent comme les Universal Apps.

Fonctionnalités non supportés dans Silverlight 8.1 :
- Background Audio (existe dans les Universal Apps)
- Continuous Background Execution Agents (GPS Apps)

Nouvelles fonctionnalités et mises à jour :

- Nouvelles API disponibles pour les applications Natives (C++)
- WinRT APIs
- SD Card Support
- Share Source
- Share Target
- WNS Push Notification Trigger
- WNS Notifications
- Storage
- GeoFencing
- Bluetooth 4.0
- Background Tasks
- Known Folders (Audio/Video/Photos/…)
- Appointments / Calendar Enhancements
- Email with Attachments
- Web Authentication
- Data Roaming
- Accessibility (UIA, Large Text, High Contrast)

On a ensuite une démonstration du remplacement d’un EmailComposeTask par un Share Contract avec une pièce jointe suivi d’une autre démonstration où on ajoute une BackgroundTask.

Le Store supporte maintenant 3 versions d’une application (7.1, 8.0 et 8.1).
Avant de pouvoir déployer une application 8.1 pour la première fois, il faut réserver un nom spécifique à cette version. Ce nom doit se trouver dans le appxmanifest et il faut l’éditer à la main en mode texte (voir slides de la présentation).

 

 

John

 

Suivre

Recevez les nouvelles publications par mail.