So wird's gemacht: Authentifizieren mit dem Windows-Pushbenachrichtigungsdienst (Windows Push Notification Service, WNS) (Windows-Runtime-Apps)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

In diesem Thema wird erläutert, wie der Cloudserver mit dem Windows-Pushbenachrichtigungsdienst (Windows Push Notification Service, WNS) authentifiziert wird und Sie im Gegenzug ein Zugriffstoken erhalten.

Voraussetzungen

Anweisungen

Schritt 1: Registrieren der App im Dashboard

Bevor Sie Benachrichtigungen per WNS senden können, müssen Sie die App registrieren. Verwenden Sie dafür das Dashboard, also das Entwicklerportal zum Übermitteln, Zertifizieren und Verwalten Ihrer Windows Store-Apps. Bei der Registrierung Ihrer App über das Dashboard erhalten Sie Anmeldeinformationen – eine Paketsicherheits-ID (Security Identifier, SID) und einen geheimen Schlüssel –, mit denen der Clouddienst für WNS authentifiziert wird.

Registrierung:

  1. Navigieren Sie zur Seite Windows Store-Apps im Windows Dev Center, und melden Sie sich mit Ihrem Microsoft-Konto an.

  2. Melden Sie sich an, und klicken Sie auf den Link Dashboard.

  3. Wählen Sie im Dashboard App übermitteln aus.

    Position der Option zum Übermitteln einer neuen App

  4. Wählen Sie auf der Seite App übermitteln die Option App-Name.

    Seite "App übermitteln"

  5. Geben Sie einen eindeutigen Namen für Ihre App an. Geben Sie den Namen ein, und klicken Sie auf die Schaltfläche Name reservieren. Sollte der Name verfügbar sein, wird er für Ihre App reserviert. Nachdem Sie für Ihre App erfolgreich einen Namen reserviert haben, können Sie auch die anderen Informationen bearbeiten, wenn Sie dies wünschen.

Schritt 2: Abrufen der Identitätswerte für Ihre App

Beim Reservieren eines Namens für Ihre App wurden vom Windows Store die zugehörigen Anmeldeinformationen erstellt. Dabei wurden außerdem die zugeordneten Identitätswerte (Name und Herausgeber) zugewiesen, die in der Manifestdatei der App ("package.appxmanifest") angegeben werden müssen. Haben Sie Ihre App bereits in den Windows Store hochgeladen, wurden diese Werte dem Manifest automatisch hinzufügt. Haben Sie die App noch nicht hochgeladen, müssen Sie dem Manifest die Identitätswerte manuell hinzufügen.

  1. Wählen Sie den Link Dienste.

    Die Seite der App mit dem Link "Dienste"

  2. Wählen Sie auf der Seite Dienste den Link Live Services aus, der unter dem Abschnitt Microsoft Azure Mobile Services zu finden ist.

    Die Seite "Dienste"

  3. Wählen Sie auf der Seite Informationen zu Pushbenachrichtigungen und Live Connect-Diensten die Option Identifizieren der App aus.

    Position der Option "Identifizieren der App"

  4. Auf der Seite Identifizieren der App finden Sie ein identity-Element, das Sie in das Manifest der App einfügen können. Öffnen Sie das Manifest in einem Text-Editor, und fügen Sie dieses Element wie auf der Seite gefordert hinzu.

    Das in das Manifest zu kopierende identity-Element

Schritt 3: Abrufen der Anmeldeinformationen für Ihre App

  1. Klicken Sie unten auf der Seite Identifizieren der App auf den Link Authentifizieren des Diensts.

    Position der Option "Authentifizieren des Diensts"

  2. Auf der Seite Authentifizieren des Diensts werden die Sicherheits-ID und der geheime Clientschlüssel angegeben. Um Pushbenachrichtigungen an diese App zu senden, müssen von Ihrem Clouddienst genau diese Anmeldeinformationen verwendet werden. Sie können nicht die Anmeldeinformationen eines anderen Clouddiensts zum Senden von Benachrichtigungen an diese App verwenden. Außerdem können diese Anmeldeinformationen nicht zum Senden von Benachrichtigungen an eine andere App verwendet werden.

    Hinweis  Diese Seite kann auch zum Generieren neuer Anmeldeinformationen verwendet werden.

     

    Seite "Authentifizieren des Diensts" mit SID und geheimem Schlüssel

  3. Laden Sie die SID und den geheimen Schlüssel für den Cloudserver hoch.

    Wichtig  Die SID und der geheime Schlüssel müssen an einem sicheren Ort gespeichert werden, und der Clouddienst muss über eine sichere Verbindung darauf zugreifen. Werden diese Informationen weitergegeben oder gestohlen, kann ein Angreifer ohne Ihre Erlaubnis und ohne Ihr Wissen Benachrichtigungen an die Benutzer senden.

     

Schritt 4: Senden der Anmeldeinformationen des Clouddiensts an die WNS

Vom Clouddienst werden die Anmeldeinformationen (SID und geheimer Clientschlüssel) per HTTPS-Authentifizierungsanforderung bereitgestellt, für die das Format "application/x-www-for-urlencoded" genutzt wird.

Dieses Beispiel zeigt eine HTTPS-Authentifizierungsanforderung. Sie enthält eine Paket-SID und einen geheimen Schlüssel in "grant_type". Stellen Sie sicher, dass Sie im Feld "client_id" Ihre eigene Paket-SID und im Feld "client_secret" Ihren geheimen Schlüssel angeben. Syntaxinformationen finden Sie im Thema Anforderungs- und Antwortheader des Pushbenachrichtigungsdiensts.


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

Vom WNS wird dann eine Antwort auf die Authentifizierungsanforderung an den Server gesendet. Wenn dieser Antwortcode "200 OK" lautet, war die Authentifizierung erfolgreich. Die Antwort enthält dann ein Zugriffstoken, das vom Cloudserver gespeichert und für alle gesendeten Benachrichtigungen verwendet wird, bis das Zugriffstoken abläuft.

Hier wird ein Beispiel für eine WNS-Antwort auf eine erfolgreiche Authentifizierung gezeigt.


HTTP/1.1 200 OK   
Cache-Control: no-store
Content-Length: 422
Content-Type: application/json
 
{
    "access_token":"EgAcAQMAAAAALYAAY/c+Huwi3Fv4Ck10UrKNmtxRO6Njk2MgA=", 
    "token_type":"bearer"
}

Im folgenden Beispiel ist der Code angegeben, der zum Senden der Authentifizierungsanforderung und Empfangen der Antwort erforderlich ist. Sie können dieses Beispiel direkt in Ihren eigenen Cloudservercode kopieren, sofern der Code die folgenden Direktiven enthält:

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);
}

Verwandte Themen

Übersicht über den Windows-Pushbenachrichtigungsdienst (Windows Push Notification Service, WNS)

Anforderungs- und Antwortheader des Pushbenachrichtigungsdiensts

Beispiel für Pushbenachrichtigungen und periodische Benachrichtigungen

Schnellstart: Senden einer Pushbenachrichtigung

Anfordern, Erstellen und Speichern eines Benachrichtigungskanals