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
- Windows Store-Entwicklerkonto
- Windows Store-App, die registriert werden soll
- Grundkenntnisse im Bereich XML und in Bezug auf die Begriffe und Konzepte für Kacheln und Benachrichtigungen
- Kenntnisse im Bereich Pushbenachrichtigungen sowie über die Konzepte, Anforderungen und die Verwendung des WNS
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:
Navigieren Sie zur Seite Windows Store-Apps im Windows Dev Center, und melden Sie sich mit Ihrem Microsoft-Konto an.
Melden Sie sich an, und klicken Sie auf den Link Dashboard.
Wählen Sie im Dashboard App übermitteln aus.
Wählen Sie auf der Seite App übermitteln die Option App-Name.
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.
Wählen Sie den Link Dienste.
Wählen Sie auf der Seite Dienste den Link Live Services aus, der unter dem Abschnitt Microsoft Azure Mobile Services zu finden ist.
Wählen Sie auf der Seite Informationen zu Pushbenachrichtigungen und Live Connect-Diensten die Option Identifizieren der App aus.
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.
Schritt 3: Abrufen der Anmeldeinformationen für Ihre App
Klicken Sie unten auf der Seite Identifizieren der App auf den Link Authentifizieren des Diensts.
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.
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