Краткое руководство: подключение к поставщику сетевых удостоверений (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
В этом разделе описывается процедура подключения вашего приложения Магазина Windows к поставщику сетевых удостоверений, применяющему протоколы проверки подлинности в Интернете OpenID или OAuth.
Приложения Магазина Windows используют брокер веб-проверки подлинности для подключения к поставщикам сетевых удостоверений. Приложение вызывает метод AuthenticateAsync, который отправляет запрос поставщику сетевых удостоверений и получает маркер доступа, описывающий ресурсы поставщика, к которым имеет доступ приложение. Полный пример: Web authentication broker. Подробнее см. в разделе Брокер веб-проверки подлинности. Справочную документацию см. в разделе Windows.Security.Authentication.Web.
Прочитав этот раздел, обратитесь к следующим статьям:
- Особенности брокера веб-проверки подлинности для сетевых поставщиков
- Брокер веб-проверки подлинности
Необходимые условия
- Вы должны быть знакомы с JavaScript.
- Также необходимо знать требования при проверке подлинности вашего поставщика сетевого удостоверения.
Регистрация приложения у поставщика
Вам нужно зарегистрировать приложение у поставщика сетевых удостоверений, к которому вы хотите подключиться. Узнать, как это делается, можно у поставщика сетевых удостоверений. После регистрации поставщик обычно передает идентификатор приложения.
Составление URI запроса проверки подлинности
URI запроса состоит из адреса, по которому поставщику отправляется запрос проверки подлинности, и другой необходимой информации (например, идентификатора приложения или секретных данных), а также URI перенаправления, по которому переходит пользователь, завершивший проверку подлинности, и ожидаемого типа ответа. Вы можете выяснить у своего поставщика, какие именно параметры необходимы.
URI запроса отправляется как параметр requestUri метода authenticateAsync. Это должен быть безопасный адрес (который начинается с https://).
В следующем примере показано, как составляется URI запроса.
var startURL = "https://<providerendpoint>?client_id=<clientid>&scope=<scopes>&response_type=token";
var startURI = new Windows.Foundation.Uri(startURL);
Подключение к поставщику
Для подключения к поставщику сетевых удостоверений и получения маркера доступа вызывается метод authenticateAsync. Метод берет URI, созданный на предыдущем этапе, в качестве параметра requestUri, а URI, выбранный вами для перенаправления пользователя, — в качестве параметра callbackUri.
В следующем примере показано, как подключаться к поставщику сетевых удостоверений.
authzInProgress = true;
Windows.Security.Authentication.Web.WebAuthenticationBroker.authenticateAsync(
Windows.Security.Authentication.Web.WebAuthenticationOptions.none, startURI,endURI)
.done(function (result) {
document.getElementById("AnyServiceReturnedToken").value = result.responseData;
document.getElementById("AnyServiceDebugArea").value += "Status returned by WebAuth broker: " + result.responseStatus + "\r\n";
if (result.responseStatus === Windows.Security.Authentication.Web.WebAuthenticationStatus.errorHttp) {
document.getElementById("AnyServiceDebugArea").value += "Error returned: " + result.responseErrorDetail + "\r\n";
}
authzInProgress = false;
}, function (err) {
WinJS.log("Error returned by WebAuth broker: " + err, "Web Authentication SDK Sample", "error");
document.getElementById("AnyServiceDebugArea").value += " Error Message: " + err.message + "\r\n";
authzInProgress = false;
});
Подключение с единым входом
По умолчанию брокер веб-проверки подлинности не разрешает сохранять файлы cookie. Из-за этого даже в том случае, когда пользователь приложения указывает, что не хочет выходить из приложения (например, установив флажок в диалоговом окне входа в систему поставщика), ему придется выполнять вход каждый раз при обращении к ресурсам данного поставщика. Чтобы выполнить вход с помощью единого входа, ваш поставщик сетевых удостоверений должен включить единый вход для брокера веб-проверки подлинности, а ваше приложение должно вызвать перегрузку authenticateAsync, где не применяется параметр callbackUri.
В целях поддержки единого входа поставщик должен разрешить вам зарегистрировать URI перенаправления в форме ms-app://
appSID, где appSID — это ИД безопасности для вашего приложения. ИД безопасности вашего приложения можно найти на странице разработчика вашего приложения в Магазине Windows или путем вызова метода getCurrentApplicationCallbackUri.
В следующем примере демонстрируется способ подключения к поставщику сетевых удостоверений с применением единого входа.
var redirectURL = Windows.Security.Authentication.Web.WebAuthenticationBroker.getCurrentApplicationCallbackUri().absoluteUri;
var startURL = "https://<providerendpoint>?client_id=<clientid>&redirect_uri=" + encodeURIComponent(redirectURL) + "&scope=<scopes>&response_type=token";
var startURI = new Windows.Foundation.Uri(startURL);
Windows.Security.Authentication.Web.WebAuthenticationBroker.authenticateAsync(
Windows.Security.Authentication.Web.WebAuthenticationOptions.none, startURI)
.done(function (result) {
if (result.responseStatus === Windows.Security.Authentication.Web.WebAuthenticationStatus.errorHttp) {
document.getElementById("FacebookDebugArea").value += "Error returned: " + result.responseErrorDetail + "\r\n";
}
// Parse out the OAuth token from result.responseData
}, function (err) {
WinJS.log("Error returned by WebAuth broker: " + err, "Web Authentication SDK Sample", "error");
});
Предварительный просмотр состояния приложения, прошедшего проверку подлинности, в Blend
При применении authenitcateUserAsync для проверки подлинности приложения во время выполнения можно использовать те же учетные данные для доступа к состоянию приложения, прошедшему проверку подлинности, в Blend для Microsoft Visual Studio 2013. Это означает, что вы можете открыть версию приложения, прошедшую проверку подлинности, внести изменения во внешний вид и предварительно просмотреть внесенные изменения, не выходя из Blend.
- В Blend в категории Время разработки на панели Устройство выберите пункт Аутентификация.
- Чтобы выполнить сборку и запустить приложение, нажмите клавишу F5.
- Используя свои учетные данные, войдите в приложение.
- Вернитесь в Blend и перезагрузите приложение.
- Перейдите в развернутое приложение и нажмите клавиши ALT+F4, чтобы закрыть его. Примечание Одновременно может выполняться только один экземпляр идентификатора пакета приложения. Поскольку представление приложения, прошедшее проверку подлинности, в Blend использует тот же идентификатор пакета, что и развернутая версия приложения, приложение не может выполняться в фоновом режиме, когда оно выполняется в Blend.
- Вернитесь в Blend и продолжите работу.
Сводка
В этой теме мы показали, как подключаться к поставщику сетевых удостоверений при включении единого входа и без единого входа.
Связанные разделы
Разработка приложений Магазина Windows
Пример брокера веб-проверки подлинности