Краткое руководство: подключение к поставщику сетевых удостоверений (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.

  1. В Blend в категории Время разработки на панели Устройство выберите пункт Аутентификация.Панель “Устройство” в Blend
  2. Чтобы выполнить сборку и запустить приложение, нажмите клавишу F5.
  3. Используя свои учетные данные, войдите в приложение.
  4. Вернитесь в Blend и перезагрузите приложение.
  5. Перейдите в развернутое приложение и нажмите клавиши ALT+F4, чтобы закрыть его. Примечание  Одновременно может выполняться только один экземпляр идентификатора пакета приложения. Поскольку представление приложения, прошедшее проверку подлинности, в Blend использует тот же идентификатор пакета, что и развернутая версия приложения, приложение не может выполняться в фоновом режиме, когда оно выполняется в Blend.  
  6. Вернитесь в Blend и продолжите работу.

Сводка

В этой теме мы показали, как подключаться к поставщику сетевых удостоверений при включении единого входа и без единого входа.

Связанные разделы

Разработка приложений Магазина Windows

Пример брокера веб-проверки подлинности

Брокер веб-проверки подлинности

Windows.Security.Authentication.Web