Что такое аутентификация
Аутентификация представляет собой процедуру подтверждения подлинности.
Проверка осуществляется с помощью электронной подписи либо другого электронного ключа, может быть использован пароль и иные способы.
- Пароль – это введенное при регистрации слово, выданный графический ключ либо PIN-код.
- Механизм – в качестве такого устройства может быть использована карточка либо USB-ключ.
- Биометрика – это сетчатка глаза, отпечаток пальца, голос либо фото.
https://www.youtube.com/watch?v=44TCi7O_oPk
Данное понятие, чаще всего, применяется к любым информационным носителям. Процедура может быть взаимной и односторонней, наиболее популярным является криптографический метод проверки.
Что такое авторизация
И последнее, что необходимо знать о входе на сайт – это авторизация.
Данная процедура подразумевает попадание на страницу в случае успешного прохождения аутентификации и идентификации.
Также авторизация может означать, что человек допускается до выполнения определенной задачи, доступ к которой имеет только он или определенная группа человек.
По итогу можем сказать, что все выше изучаемые процедуры взаимосвязаны между собой и напрямую зависят друг от друга и выполнение операций соблюдается в строгом порядке. Однако путать между собой их не следует.
- Идентификация.
- Аутентификация.
- Авторизация.
Что такое аутентификация?
На процессах аутентификации и авторизации основано разделения прав доступа, без которого не обходится ни одно более или менее серьезное приложение. Поэтому понимать, как они происходили раньше и происходят теперь, очень важно, но, прежде чем углубиться в описание технологии, давайте разберемся с ключевыми терминами.
Идентификация — процесс определения, что за человек перед нами. Аутентификация — процесс подтверждения, что этот человек именно тот, за кого себя выдает. Авторизация — процесс принятия решения о том, что именно этой аутентифицированной персоне разрешается делать.
В ходе аутентификации мы удостоверяемся, что человек, который к нам пришел, обладает доказательствами, подтверждающими личность. В этой статье речь в основном пойдет как раз об аутентификации.
Что такое идентификация
Это еще одна из встроенных функций для входа на сервис либо в приложение.
Идентификация представляет собой процедуру указания личности, когда программа должна распознать идентификатора по предоставленным данным.
Основные поля
Кратко остановимся на том, какие есть стандартные полях в токене и зачем они нужны:
Forms authentication
Token authentication
Следующее поколение способов аутентификации представляет Token Based Authentication, который обычно применяется при построении систем Single sign-on (SSO). При его использовании запрашиваемый сервис делегирует функцию проверки достоверности сведений о пользователе другому сервису. Т. е. провайдер услуг доверяет выдачу необходимых для доступа токенов собственно токен-провайдеру (Identity provider).
Это то, что мы видим, например, входя в приложения через аккаунты в социальных сетях. Вне IT самой простой аналогией этого процесса можно назвать использование общегражданского паспорта. Официальный документ как раз является выданным вам токеном — все государственные службы по умолчанию доверяет отделу полиции, который его вручил, и считает паспорт достаточным для вашей аутентификации на протяжении всего срока действии при сохранении его целостности.
На схеме хорошо видно, как и в какой последовательности приложения обмениваются информацией при использовании аутентификацией по токенам.
На следующей схеме дополнительно отражены те этапы взаимодействия, в которых пользователь принимает непосредственное участие. Этот момент и является недостатком подобной схемы — нам всегда нужен пользователь, чтобы получить доступ к ресурсу.
Взгляд сверху
Обычно в системах встречаются разные компоненты: пользователи, работающие через браузер, пользователи, взаимодействующие с сервером через мобильные приложения, и просто серверные приложения, нуждающиеся в принадлежащих вам данных, хранящихся на других серверах, доступ к которым осуществляется через Web API.
Двухфакторная аутентификация 2fa
Двухфакторная аутентификация является одним из вариантов идентификации пользователя.
Используется в различных сервисах, чаще всего, это интернет-ресурсы, связанные с важной информацией либо с приложениями (сайтами), где можно проводить денежные операции.
Двухфакторная Аутентификация подразумевает высший уровень защиты и состоит из таких этапов:
Запрос на аутентификацию
Authentication/Token Request — процесс запроса аутентификации.
В зависимости от того какие области (scopes) запрошены, сервис выдачи токенов вернет:
- Только Identity Token, если запрошены только Identity scopes.
- Identity Token и Access Token, если запрошены также и Resources scopes.
- Access Token и Refresh Token, если запрошeн Offline Access.
Более подробно про процесс аутентификации можно прочесть в разделе «
Идентификация, аутентификация, авторизация / новичкам / pki guru
Читая компьютерную литературу, документацию, получая сообщения об ошибках, а то и просто слушая выступления коллег, мы часто слышим такие слова как аутентификация, идентификация и авторизация.
Вроде бы, эти слова синонимы и могут заменять друг друга, однако, это совсем не так, и за каждым из этих слов стоит совершенно конкретный смысл, и разница в понятиях этих терминов огромна.
По моему опыту, эти слова часто путаю, а происходит это потому, что не до конца понимают процессы, которые стоят за каждым из этих слов.
Постараюсь исправить данный момент.
Идентификация — это процесс опознания, определения объекта по его свойствам.
Аутентификация — это процесс подтверждения подлинности объекта. Подтверждение подлинности осуществляется с помощью какого-либо уникального значения или свойства объекта.
Авторизация — это процесс проверки прав на доступ и предоставление доступа — после того как объект/пользователь/компьютер/сервис был идентифицирован или аутентифицирован, он может запросить доступ к каким-либо ресурсам.
При «входе в компьютер» мы проходим все три процесса, описанные выше:
- Идентификация — мы указываем свой логин для входа, при этом будет осуществлена проверка, существует ли такой пользователь. Если пользователь существует, то его необходимо аутентифицировать.
- Аутентификация — мы указываем свой пароль, если пароль верный, то пользователь аутентифицирован и мы получаем возможность входа в систему. Если влезать более глубоко, то после проверки пароля, так же происходит механизм авторизации, имеет ли право аутентифицированный пользователь входить в систему. Например, на контроллере домена Windows Active Directory, Вы, по умолчанию, не сможете войти в систему локально, если пользователь не входит в группу Доменные Администраторы. То есть в данном примере пользователь будет идентифицирован и аутентифицирован (введены верные имя пользователя и пароль), но не будет авторизован (нет прав для локального входа на контроллер домена).
- Авторизация — мы пытаемся открыть файл, если нам даны права на только чтение файла, то мы его сможем открыть и прочитать. Но записать какие-либо изменения в файл мы не сможем, так как мы не авторизированы на запись в файл
Отдельно эти процессы встречаются редко.
Обычно после процесса идентификации или авторизации идёт процесс авторизации.
Например, Вы приходите в офис, прикладываете электронный пропуск к считывателю, и система опознаёт Ваш пропуск (идентифицирует). После этого система определяет, имеете ли Вы право входить в офис или нет, в случае если имеете, то дверь откроется (вы авторизованы).
Надеюсь, у меня получилось пояснить разницу и взаимосвязь понятий идертификация, аутентификация и авторизация.
Не путайте их, пожалуйста…
Какие могут быть ошибки
Одной из самых распространённых ошибок аутентификации является невозможность подключения к домашнему WiFi-роутеру.
- В первую очередь, проверьте, правильно ли вы написали ключевую фразу, далее посмотрите, не активирована ли на клавиатуре клавиша Caps Lock (печать большими буквами). Если причины не в этом, то, скорее всего, неверно введен пароль.
- Если вы не помните свой пароль, то его можно посмотреть в настройках к вайфай-роутеру.
Для этого подключаемся к нему через кабель, имея выход в интернет – открываем любой из используемых браузеров и вводим в поисковую строчку IP нашего маршрутизатора. Данная информация должна быть на корпусе самого устройства либо в инструкции к нему.
- Итак, вы проверили правильность указанных данных, учитывая язык и размер букв.
Будьте внимательны при вводе, очень часто, если ввод данных засекречен звездочками сложно понять, что вы делаете не так.
- А также вы изучили свой пароль и учли все буквы и их размер, а подключиться все равно не получается, тогда обратите внимание, что возможно вам необходимо пройти двухфакторную процедуру проверки достоверности информации, которая изначально установлена пользователем.
Клиент
Client — устройство или программа (браузер, приложение), которым требуется либо токен для аутентификации пользователя, либо токен для доступа к какому-то ресурсу (подразумевается, что данный ресурс «знаком» с тем конкретным «
» у которого клиент запрашивает токен для доступа).
Область (scope)
Scope — идентификатор ресурса, к которому клиент хочет получить доступ. Список scope посылается в адрес
в составе
По умолчанию все клиенты имеют возможность запрашивать любые области, но это можно (и нужно) ограничивать в конфигурации сервиса выдачи токенов.
Scopes бывают двух видов:
- Identity scopes — это запрос информации о пользователе. Его имя, профиль, пол, фотография, адрес электронной почты и т. д.
- Resource scopes — имена внешних ресурсо (Web APIs), к которым клиент хочет получить доступ.
Процесс аутентификации
Разбираемся детально ху из ху
В данный момент на слуху следующие протоколы:
- OpenID — для проверки учетных данных пользователя (identification & authentication).
- OAuth — про то, чтобы получать доступ к чему-то.
- OpenID Connect — и про и то, и про другое одновременно.
Сервис выдачи токенов
Open ID Connect Provider — важнейший объект всей конструкции централизованного сервиса аутентификации, он также может называться Security Token Service, Identity Provider authorization server и т. д. Различные источники называют его по-разному, но по смыслу это сервис, который выдает токены клиентам.
Основные функции:
Токен доступа
Access Token — информация, что конкретному пользователю разрешается делать. Клиент запрашивает Access Token и затем использует его для доступа к ресурсам (Web APIs). Access Token содержит информацию о клиенте и пользователе, если она присутствует. Важно понимать, что есть такие типы авторизации, при которых пользователь в процессе непосредственно не участвует (подробнее об этом в следующей части)
Токен личности
Identity Token — подтверждение аутентификации. Этот токен содержит минимальный набор информации о пользователе.
Токен обновления
Refresh Token — токен, по которому STS вернет новый Access Token. В зависимости от режима работы, Refresh Token может быть многоразовым и одноразовым. В случае с одноразовым токеном, при запросе нового Access Token будет также сформирован готовый Refresh Token, который следует использовать при повторном обновлении. Очевидно, что одноразовые токены более безопасны.
Более подробно о составе токенов в разделе «структура токена».
Формат
Заключение первой части
В этой статье мы постарались дать теоретический и терминологический фундамент, который понадобится нам создании работающего решения в следующих статьях.
Stay tuned.
Минимальная реализация интеграция Identity Server в ваше приложение выглядит так:
public void Configuration(IAppBuilder app)
{
var factory = new IdentityServerServiceFactory();
factory.UseInMemoryClients(Clients.Get())
.UseInMemoryScopes(Scopes.Get())
.UseInMemoryUsers(Users.Get());
var options = new IdentityServerOptions
{
SiteName = Constants.IdentityServerName,
SigningCertificate = Certificate.Get(),
Factory = factory,
};
app.UseIdentityServer(options);
}
Минимальная реализация интеграции веб-клиента с Identity Server:
public void Configuration(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "Cookies"
});
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = Constants.ClientName,
Authority = Constants.IdentityServerAddress,
RedirectUri = Constants.ClientReturnUrl,
ResponseType = "id_token",
Scope = "openid email",
SignInAsAuthenticationType = "Cookies",
});
}
Минимальная реализация интеграции веб-API с Identity Server:
public void Configuration(IAppBuilder app)
{
app.UseIdentityServerBearerTokenAuthentication(
new IdentityServerBearerTokenAuthenticationOptions
{
Authority = Constants.IdentityServerAddress,
RequiredScopes = new[] { "write" },
ValidationMode = ValidationMode.Local,
// credentials for the introspection endpoint
ClientId = "write",
ClientSecret = "secret"
});
app.UseWebApi(WebApiConfig.Register());
}