Comment s’authentifier auprès des services de notifications Push Windows (WNS) (applications Windows Runtime)
[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]
Cette rubrique explique comment authentifier votre serveur cloud auprès des services de notifications Push Windows (WNS) et recevoir un jeton d’accès en retour.
Prérequis
- Un compte de développeur du Windows Store.
- Une application du Windows Store à inscrire.
- Une bonne connaissance des concepts et termes liés aux vignettes et aux notifications, ainsi que du format XML.
- Des connaissances suffisantes sur les concepts, les exigences et le fonctionnement des notifications Push et des services WNS.
Instructions
Étape 1: Inscrire votre application dans le Tableau de bord
Pour pouvoir envoyer des notifications via WNS, vous devez inscrire votre application. Pour cela, utilisez le Tableau de bord, le portail des développeurs qui vous permet de soumettre, certifier et gérer vos applications du Windows Store. Lorsque vous inscrivez votre application via le Tableau de bord, vous obtenez certaines informations d’identification, à savoir un identificateur de sécurité de package (le SID) et une clé secrète, que votre service cloud utilisera pour s’authentifier auprès de WNS.
Pour s’inscrire :
Accédez à la page Applications du Windows Store du Centre de développement Windows, puis connectez-vous à l’aide de votre compte Microsoft.
Une fois connecté, cliquez sur le lien Tableau de bord.
Sur le Tableau de bord, sélectionnez Soumettre une application.
Dans la page Soumettre une application, sélectionnez Nom de l’application.
Indiquez un nom unique pour votre application. Entrez le nom, puis cliquez sur le bouton Réserver un nom. Si le nom est disponible, il est réservé pour votre application. Une fois que vous avez réservé un nom pour votre application, les autres détails deviennent accessibles, et vous pouvez choisir de les modifier à ce stade.
Étape 2: Obtenir les valeurs d’identité de votre application
Lorsque vous avez réservé un nom pour votre application, le Windows Store a créé des informations d’identification associées. Il a également assigné des valeurs d’identité associées (nom et éditeur) qui doivent être présentes dans le fichier manifeste de votre application (package.appxmanifest). Si vous avez déjà téléchargé votre application dans le Windows Store, ces valeurs ont été ajoutées automatiquement à votre manifeste. Si vous n’avez pas téléchargé votre application, vous devez ajouter manuellement les valeurs d’identité à votre manifeste.
Cliquez sur le lien Services.
Dans la page Services, sélectionnez le lien Services Microsoft Live qui figure sous la section Services mobiles Microsoft Azure.
Dans la page Informations sur les notifications Push et les services Live Connect, sélectionnez Identification de votre application.
La page Identification de votre application vous donne un élément identity à inclure dans le manifeste de votre application. Ouvrez votre manifeste dans un éditeur de texte et ajoutez-y cet élément conformément aux instructions de la page.
Étape 3: Obtenir les informations d’identification de votre application
Cliquez sur le lien Authentification de votre service au bas de cette même page Identification de votre application.
La page Authentification de votre service comporte votre identificateur de sécurité et votre clé secrète client. Pour envoyer des notifications Push à cette application, votre service cloud doit utiliser ces mêmes informations d’identification. Vous ne pouvez pas utiliser les informations d’identification d’un autre service cloud pour envoyer des notifications à cette application, pas plus que vous ne pouvez utiliser ces informations d’identification pour envoyer des notifications à une autre application.
Remarque Cette page permet également de générer de nouvelles informations d’identification.
Téléchargez le SID et la clé secrète client sur votre serveur cloud.
Important Le SID et la clé secrète client doivent être stockés en lieu sûr et être accessibles à votre service cloud. La divulgation ou la subtilisation de ces informations peut permettre à une personne malveillante d’envoyer des notifications à vos utilisateurs sans votre autorisation ou à votre insu.
Étape 4: Envoyer les informations d’identification du serveur cloud à WNS
Le service cloud envoie ses informations d’identification (le SID et la clé secrète client) par le biais d’une demande d’authentification HTTPS au format « application/x-www-for-urlencoded ».
Cet exemple illustre une demande d’authentification HTTPS. Il inclut un SID de package et une clé secrète dans grant_type. Veillez à bien substituer la valeur du champ "client_id" par votre propre SID de package et la valeur du champ "client_secret" par votre propre clé secrète si vous copiez ce code. Pour plus d’informations sur la syntaxe, voir En-têtes des demandes et des réponses du service de notifications Push.
POST /accesstoken.srf HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: https://login.live.com
Content-Length: 211
grant_type=client_credentials&client_id=ms-app%3a%2f%2fS-1-15-2-2972962901-2322836549-3722629029-1345238579-3987825745-2155616079-650196962&client_secret=Vex8L9WOFZuj95euaLrvSH7XyoDhLJc7&scope=notify.windows.com
WNS envoie ensuite à votre serveur une réponse à la demande d’authentification. Si le code de la réponse est « 200 OK », l’authentification a réussi et la réponse comprend un jeton d’accès qui doit être enregistré et utilisé par le serveur cloud dans chaque notification qu’il envoie, jusqu’à ce que ce jeton d’accès arrive à expiration.
Un exemple d’une réponse WNS à une authentification réussie est affiché ici.
HTTP/1.1 200 OK
Cache-Control: no-store
Content-Length: 422
Content-Type: application/json
{
"access_token":"EgAcAQMAAAAALYAAY/c+Huwi3Fv4Ck10UrKNmtxRO6Njk2MgA=",
"token_type":"bearer"
}
L’exemple suivant fournit le code requis pour envoyer la demande d’authentification et recevoir la réponse. Vous pouvez copier cet exemple directement dans votre propre code de serveur cloud, en veillant à y inclure les directives suivantes :
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
using System.IO;
[DataContract]
public class OAuthToken
{
[DataMember(Name = "access_token")]
public string AccessToken { get; set; }
[DataMember(Name = "token_type")]
public string TokenType { get; set; }
}
private OAuthToken GetOAuthTokenFromJson(string jsonString)
{
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(jsonString)))
{
var ser = new DataContractJsonSerializer(typeof(OAuthToken));
var oAuthToken = (OAuthToken)ser.ReadObject(ms);
return oAuthToken;
}
}
protected OAuthToken GetAccessToken(string secret, string sid)
{
var urlEncodedSecret = HttpUtility.UrlEncode(secret);
var urlEncodedSid = HttpUtility.UrlEncode(sid);
var body =
String.Format("grant_type=client_credentials&client_id={0}&client_secret={1}&scope=notify.windows.com", urlEncodedSid, urlEncodedSecret);
string response;
using (var client = new WebClient())
{
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
response = client.UploadString("https://login.live.com/accesstoken.srf", body);
}
return GetOAuthTokenFromJson(response);
}
Rubriques associées
Vue d’ensemble des services de notifications Push Windows (WNS)
En-têtes des demandes et des réponses du service de notifications Push
Exemple de notifications Push et périodiques
Démarrage rapide : envoi d’une notification Push
Comment demander, créer et enregistrer un canal de notification