Как выполнять проверку подлинности с помощью службы push-уведомлений Windows (WNS) (приложения среды выполнения Windows)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
В этой статье описано, как выполнить проверку подлинности облачного сервера при помощи служб push-уведомлений Windows (WNS) и получить маркер доступа.
Необходимые условия
- Учетная запись разработчика приложений для Магазина Windows.
- Регистрируемое приложение Магазина Windows
- Хорошее знание терминов и концепций плиток и уведомлений, а также XML.
- Знание понятий, требований и способов использования push-уведомлений и WNS.
Инструкции
Этап 1: Регистрация приложения на информационной панели
Прежде чем отправлять уведомления через службу WNS, необходимо зарегистрировать приложение. Для этого воспользуйтесь информационной панелью — порталом разработчиков, предназначенным для отправки, сертификации приложений Магазина Windows и управления ими. При регистрации приложения на информационной панели вам предоставляются учетные данные — идентификатор безопасности пакета (SID) и секретный ключ, — которые будут использоваться вашей облачной службой для прохождения проверки подлинности при помощи WNS.
Регистрация:
Перейдите на страницу Приложения Магазина Windows в Центре разработки для Windows и войдите в систему с учетной записью Майкрософт.
Войдя в систему, перейдите по ссылке Информационная панель.
На информационной панели выберите Отправить приложение.
На странице отправки приложения выберите Имя приложения.
Дайте своему приложению уникальное имя. Введите имя и нажмите кнопку Зарезервировать имя. Если имя доступно, оно будет зарезервировано для вашего приложения. Если понадобится, после резервирования имени приложения вы сможете изменить другие данные.
Этап 2: Получение значений удостоверения для вашего приложения
При резервировании имени для вашего приложения Магазин Windows создал сопоставленные с вами учетные данные. Вам также были присвоены значения удостоверения — имя и издатель, — которые должны присутствовать в файле манифеста вашего приложения (package.appxmanifest). Если вы уже отправили свое приложение в Магазин Windows, эти значения будут автоматически добавлены в манифест. Если вы еще не отправили свое приложение, то значения удостоверения потребуется добавить в манифест вручную.
Перейдите по ссылке Службы.
На странице Службы перейдите по ссылке Службы Live в разделе Мобильные службы Microsoft Azure.
На странице Сведения о push-уведомлениях и службах Live Connect выберите Идентификация приложения.
На странице Идентификация приложения содержится элемент identity, который нужно включить в манифест приложения. Откройте манифест в текстовом редакторе и добавьте этот элемент, как указано в инструкциях на странице.
Этап 3: Получение учетных данных для приложения
Щелкните ссылку Проверка подлинности службы внизу той же страницы Идентификация приложения.
На странице Проверка подлинности службы содержатся идентификатор безопасности и секрет клиента. Чтобы отправлять push-уведомления этому приложению, ваша облачная служба должна использовать именно эти учетные данные. Вы не можете использовать учетные данные другой облачной службы для отправки уведомлений этому приложению, а также эти учетные данные — для отправки уведомлений другому приложению.
Примечание Эту страницу также можно использовать для генерирования новых учетных данных.
Отправьте идентификатор безопасности и секрет клиента на облачный сервер.
Важно Идентификатор безопасности и секрет клиента должны находиться в надежном месте, доступном для облачной службы. Если эта информация станет известна посторонним лицам, они смогут отправлять уведомления пользователям без вашего ведома и согласия.
Этап 4: Отправка учетных данных облачного сервера службе WNS
Облачная служба передает свои учетные данные (ИД безопасности и секрет клиента) в HTTPS-запросе проверки подлинности, который использует формат "application/x-www-for-urlencoded".
Здесь показан пример запроса проверки подлинности HTTPS. Он включает ИД безопасности пакета и секретный ключ в grant_type. Замените ваш ИД безопасности пакета в поле "client_id", а ваш секретный ключ в поле "client_secret", если копируете этот код. Сведения о синтаксисе см. в разделе Заголовки запросов и ответов службы 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 отправляет серверу ответ на запрос проверки подлинности. Если код этого ответа — "200 OK", проверка подлинности считается успешной и ответ включает маркер доступа, который облачный сервер должен сохранить и использовать во всех отправляемых уведомлениях до истечения срока действия маркера.
Пример ответа WNS на успешную проверку подлинности показан здесь.
HTTP/1.1 200 OK
Cache-Control: no-store
Content-Length: 422
Content-Type: application/json
{
"access_token":"EgAcAQMAAAAALYAAY/c+Huwi3Fv4Ck10UrKNmtxRO6Njk2MgA=",
"token_type":"bearer"
}
В следующем примере приведен код для отправки запроса проверки подлинности и получения ответа. Вы можете скопировать этот пример напрямую в собственный код облачного сервера, если вы включаете следующие директивы:
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);
}
Связанные разделы
Общие сведения о службах push-уведомлений Windows (WNS)
Заголовки запросов и ответов службы push-уведомлений
Пример push-уведомлений и периодических уведомлений