OAuth-аутентификация

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

Последнее обновление: 31.10.2015

В современном мире велика популярность различных социальных сервисов и соцсетей - google+, twitter, facebook и т.д. Это привело разработчиков к мысли использовать в качестве логина на сайт учетную запись в данных сервисах и соцсетях. До MVC4 это сложно было сделать. Но в MVC4 появились соответствующие механизмы, которые позволяют предельно упростить аутентификацию с помощью соцсетей.

В ряде случаев нам надо будет зарегистрировать свое приложение в социальных сервисах, чтобы воспользоваться возможностью подобной авторизации (как например в Facebook). А некоторые сервисы как Goggle и Yohoo, позволяют использовать возможность аутентификации на основе социальных сервисов без всякой регистрации.

Итак, в новом проекте по шаблону Internet Apllication мы уже можем найти уже готовую инфраструктуру для использования OAuth-аутентификации. Если вы посмотрите на файл AuthConfig.cs, который находится в папке App_Start, то вы найдете в нем такой код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Web.WebPages.OAuth;
using SocialAuthorization.Models;

namespace SocialAuthorization
{
    public static class AuthConfig
    {
        public static void RegisterAuth()
        {
            // To let users of this site log in using their accounts from other sites such as Microsoft, Facebook, and Twitter,
            // you must update this site. For more information visit http://go.microsoft.com/fwlink/?LinkID=252166

            //OAuthWebSecurity.RegisterMicrosoftClient(
            //    clientId: "",
            //    clientSecret: "");

            //OAuthWebSecurity.RegisterTwitterClient(
            //    consumerKey: "",
            //    consumerSecret: "");

            //OAuthWebSecurity.RegisterFacebookClient(
            //    appId: "",
            //    appSecret: "");

            //OAuthWebSecurity.RegisterGoogleClient();
        }
    }
}

Так, настройка аутентификации через Facebook:

//OAuthWebSecurity.RegisterFacebookClient(
//    appId: "",
//    appSecret: "");

Если ваше веб-приложение зарегистрировано в соцсети facebook, то вы затем можете ввести в параметр appId идентификатор вашего приложения в этой сети, а в параметр appSecret секретное слово. Значения для обоих параметров выдаются уже самой соцсетью при регистрации приложения.

В данном случае воспользуемся аутентификации с помощью Google и раскомментируем строку OAuthWebSecurity.RegisterGoogleClient();.

Контроллер AccoutController уже содержит ряд действий для работы с подобной схемой авторизации: ExternalLogin (для авторизации с помощью внешних сервисов), Manage (для управления учетной записью), ExternalLoginConfirmation (для подтверждения авторизации) и ряд других.

Затем в папке Views/Account можно увидеть ряд представлений, предназначенных для работы с OAuth. Например, частичное представление _ExternalLoginListPartial.cshtml - здесь можно настроить отображение списка сервисов, ExternalLoginConfirmation - для отображения формы подтверждения логина и ExternalLoginFailure - для отображения формы ошибки авторизации.

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

Нажмем на кнопку Google и мы попадем на страницу авторизации в самом сервисе google.

Введем логин и пароль, и после успешной авторизации на google нас попросят принять некоторые разрешения:

Нажмем на кнопку Принять и после этого мы попадем на страницу нашего приложения, где нам надо будет ассоциировать свою учетную запись внутри нашего приложения с учетной записью на google.

Нажмем на кнопку Register и тем самым свяжем учетные записи.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850