Главная » C#, Windows Runtime, XAML, Разработка для Windows 8 » Работа с WebAuthenticationBroker Windows Runtime

0

Аутентификация через третьи сервисы широко  используется в  современных приложениях.  При  этом  наиболее  широко  распространена  аутентификация через веб-страницы фейсбука, LiveId и других социальных сервисов. Как правило, в   таких  системах  предоставляется механизм  аутентификации  пользователей OAuth.  Это  означает,  что  в   приложении  необходимо  открыть  веб-страницу сервиса, на которой пользователь сможет ввести данные для  аутентификации в  нем. После успешного прохождения аутентификации приложению выдаются сессионные данные,  позволяющие ему взаимодействовать  с сервисом. Такой подход избавляет пользователя от необходимости создавать логин и пароль для каждого приложения.

Для     таких     сценариев    в        фреймворке    создан     специальный     класс WebAuthenticationBroker,    который    расположен    в    пространстве   имен Windows.Security.Authentication.Web. В  приложении мы можем выбрать для аутентификации пользователя протокол OAuth или OpenID, так как множество социальных  сетей  и  различных  ресурсов для  обмена  данными  (например, фотографиями) предоставляют именно эти механизмы взаимодействия.

При этом разработчику необходимо:

1.                   Использовать операции, которые не требуют адреса возврата.

2.                   Получить SID нашего приложения.

3.                   Зарегистрировать приложение у поставщика сервиса, т. е. на  ресурсе,

аутентификацию которого мы хотим использовать.

Пример использование этого класса для авторизации  через  социальную сеть

Facebook показан ниже:

// Необходимые данные для аутентификации private static string FACEBOOK_DATA_LINK = "https://graph.facebook.com/me?access_token="; private static string FACEBOOK_URI = "https://www.facebook.com/dialog/oauth"; private static string FACEBOOK_REDIRECT_URI =

"https://www.facebook.com/connect/login_success.html"; private static string CLIENT_ID =

"<Получить на Facebook при регистрации приложения>"; private static string CLIENT_SECRET_KEY =

"<Получить на Facebook при регистрации приложения>"; private static string RESPONSE_TYPE = "token"; private static string TOKEN_PATTERN = string.Format("{0}#access_token={1}&expires_in={2}",

FACEBOOK_REDIRECT_URI, "(?<access_token>.+)", "(?<expires_in>.+)");

. . . . . . . . . .

var requestUri = new Uri(string.Format("{0}?client_id=

{1}&redirect_uri={2}&response_type={3}&display=popup&scope= publish_stream&client_secret={4}&scope=publish_stream, user_photos,user_location,offline_access",

FACEBOOK_URI, CLIENT_ID, FACEBOOK_REDIRECT_URI, RESPONSE_TYPE, CLIENT_SECRET_KEY), UriKind.RelativeOrAbsolute); var callbackUri = new Uri(FACEBOOK_REDIRECT_URI, UriKind.RelativeOrAbsolute);

var auth = await WebAuthenticationBroker.AuthenticateAsync ( WebAuthenticationOptions.None, requestUri, callbackUri);

switch (auth.ResponseStatus)

{

case WebAuthenticationStatus.ErrorHttp:

//Обработка ситуации, когда не удалось открыть страницу сервиса

break;

case WebAuthenticationStatus.Success:

var match = Regex.Match(auth.ResponseData, TOKEN_PATTERN); var access_token = match.Groups["access_token"].Value; var expires_in = match.Groups["expires_in"].Value; break;

case WebAuthenticationStatus.UserCancel:

//Ситуация когда пользователь отменил аутентификацию

break; default:

break;

}

Результат работы WebAuthenticationBroker показан на Рис. 7.4.

Рис. 7.4.

Другие возможности сетевого взаимодействия

Как мы с вами узнали, платформа Windows 8 предоставляет широкий  спектр возможностей по сетевому взаимодействию между клиентским  приложением и  сервером, а  также  множество вариантов   реализации   сценариев такого взаимодействия. Но   кроме   рассмотренных   в     этой   главе  возможностей, операционная система позволяет работать с веб-сокетами и сокетами, управлять каналом  мобильного подключения, использовать TCP/UDP-соединения и  др. Подробнее о возможностях, которые мы не рассмотрели в этой главе, см. на сайте MSDN (http://msdn.microsoft.com/en-us/library/windows/apps/hh452751.aspx).

Сергей Лутай, Сергей Байдачный, Windows 8 для C# разработчиков

По теме:

  • Комментарии