авторизация и аутентификация для всех и каждого | techrocks

Вступление

Когда я говорю родственникам или друзьям, что «занимаюсь вопросами проверки личности», они часто думают, что я работаю в госструктуре и помогаю людям решать проблемы с водительскими правами или ловить мошенников, ворующих деньги с кредитных карт.

Но это не так. Раньше я работала в Auth0 — компании, занимающейся вопросами цифровой идентичности. Сейчас я член программы Auth0 Ambassadors и разработчик-эксперт в Google по направлению SPPI (Security, Privacy, Payments, and Identity — «безопасность, приватность, платежи и идентичность»).

Authentication versus authorization

In User Context:

Authentication = Verifying the User is who he claims to be (you can technically verify a lot of different things like password, tax info, social security info, driver’s license, fingerprints, or other biometrics … but usually a username/password is sufficient)

Authorization = Permitting the User to do something (you can set up roles [‘admin’, ‘seller’, ‘buyer’…] with permissions [‘access control center’, ‘delete products’…] and give those roles to the users, then validate the user has a role that permits him to do an action)

Permissions have a direct relationship with CRUD operations, so if building a UI, you can list objects as rows, and checkboxes in 4 columns for Create, Read, Update, Delete of that object permission for any given role.

Like in my example above ‘access control center’ is a full Create, Read, Update, and Delete access of the control center object, while ‘delete products’ is Delete access for the products object.

Note: HTTP Authorization Header was intended as permission to access a resource, but really is used as an authentication for all resource access.

It is easier in my head and in my code to think of verification and permissions because the two words

  • don’t sound alike
  • don’t have the same abbreviation
  • and actual implementation of authorization typically involves implementing Roles and Permissions

Authentication is verification and Authorization is checking permission(s). Auth can mean either, but is used more often as “User Auth” i.e. “User Authentication”. A lot of times there is no explicit authorization implementation (roles and permissions), just the authentication is used to provide the authorization to do every available action. And so that is Auth.

Oauth 2.0

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

OAuth не является спецификацией аутентификации.

OAuth имеет дело с делегированной авторизацией. Вы помните, что аутентификация — это проверка личности пользователя. Авторизация касается предоставления доступа к ресурсам или отказа в доступе. OAuth 2.0 дает возможность получить доступ к приложениям от имени пользователей. (Не волнуйтесь, аутентификацию мы тоже рассмотрим!)

Openid foundation (oidf)

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

Теперь, когда мы знаем кое-что о спецификациях и о том, кто их пишет, давайте вернемся к теме авторизации и поговорим о…

Авторизация

Авторизация связана с предоставлением доступа к определенным ресурсам или с отказом в таком доступе.

Авторизация на сайте через соцсети

На многих сайтах можно пройти регистрацию или авторизацию упрощенным способом — с помощью профиля в соцсети. Вот как это работает:

Аутентификация

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

В чем состоит разница между аутентификацией и авторизацией | блог компании artismedia

Аутентификация и авторизация – две ключевые функции сервисной инфраструктуры для защиты конфиденциальных данных и операций от несанкционированного доступа со стороны злоумышленников.BLOG-min

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

Аутентификация

Аутентификация используется для подтверждения личности зарегистрированного пользователя. Проверка подлинности – это процесс проверки учетных данных: идентификатора пользователя (имени, адреса электронной почты, номера телефона) и пароля.

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

Факторы аутентификации

Метод стандартной аутентификации не может обеспечить абсолютную безопасность при входе пользователя в систему. Для создания более надежной защиты используются дополнительные категории учетных данных (факторов).

  • Однофакторная аутентификация (SFA) – базовый, традиционный метод проверки подлинности с использованием только одной категории. Наиболее распространенным примером SFA являются учетные данные, связанные с введением имени пользователя и обычного пароля.
  • Многофакторная аутентификация (MFA) – самый современный метод проверки подлинности, который использует два, три (или больше) уровня безопасности. Категории всех уровней должны быть независимыми друг от друга, чтобы устранить любую уязвимость в системе. Финансовые организации, банки, правоохранительные органы пользуются многофакторной аутентификацией для защиты своих данных от потенциальных угроз.

Примером MFA является использование банковских карт. Наличие карты – первый фактор защиты, введение пин-кода – второй.

Авторизация

Происходит после того, как личность пользователя успешно аутентифицируется системой. Процесс авторизации определяет, имеет ли прошедший проверку человек доступ к определенным ресурсам: информации, файлам, базе данных. Факторы проверки подлинности, необходимые для авторизации, могут различаться в зависимости от уровня безопасности.

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

Заключение

Доступ к системе защищен как аутентификацией, так и авторизацией. Любая попытка доступа аутентифицируется путем ввода учетных данных, но она может быть принята только после успешной авторизации. И наоборот, если попытка аутентифицирована, но не авторизована, система запретит доступ к своим ресурсам.
Хотя, оба термина часто используются в сочетании друг с другом, они имеют совершенно разные понятия и значения. Если аутентификация – это то, кем вы являетесь, авторизация –это то, к чему вы можете получить доступ.

До oauth

Чтобы понять суть и назначение Oauth, нужно вернуться назад во времени. OAuth 1.0 был представлен в декабре 2007 года. Но до того, если нам нужен был доступ к сторонним ресурсам, выглядело все следующим образом:

Скажем, вы используете приложение с названием HireMe123. HireMe123 хочет добавить событие в вашем календаре (например, запись на собеседование). То есть, это приложение хочет осуществить действие от имени пользователя. Но HireMe123 не имеет собственного календаря. Для добавления событий это приложение хочет воспользоваться сторонним сервисом — MyCalApp.

И тут появляется oauth

OAuth 2.0 это открытый стандарт для осуществления делегированной авторизации. Это спецификация, которая говорит нам, каким образом нужно предоставлять сторонним приложениям доступ к API без разглашения паролей пользователей.

Инженерный совет интернета

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

Если говорить попроще, профессионалы объединились для написания технических документов, определяющих, как все в интернете должно делаться.

Сервер авторизации

Сервер авторизации это набор конечных точек (endpoints) для взаимодействия с пользователем и выпуска токенов.

Давайте вернемся к ситуации с HireMe123 и MyCalApp, только теперь с учетом наличия OAuth 2.0:

Теперь у MyCalApp есть сервер авторизации. Предположим, что приложение HireMe123 уже зарегистрировалось в качестве известного клиента в MyCalApp, то есть, сервер авторизации MyCalApp распознает HireMe123 в качестве сущности, которая в принципе может запрашивать доступ к его API.

Стандарты

Я уже говорила, что аутентификация имеет хорошо определенные стандарты. Но кто их определяет, откуда они берутся?

То, как все работает в интернете, определяется большим количеством разных стандартов и организаций. В контексте аутентификации и авторизации нас интересуют Инженерный совет Интернета (Internet Engineering Task Force, IETF) и OpenID Foundation (OIDF).

Цели применения авторизации в компьютерных системах

Авторизация нужна для сохранения конфиденциальности и целостности информации в системе:

  • Для защиты аккаунтов пользователей и их персональных данных (доступ к аккаунту может получить только его владелец при успешной авторизации).
  • Для предотвращения распространения спама на интернет-ресурсах — доступ предоставляется только авторизованным пользователям.
  • Для обеспечения безопасности, а также предотвращения несанкционированных операций с финансами.

Цифровая идентичность

Цифровая идентичность это набор атрибутов, определяющих отдельного пользователя в контексте функции определенного приложения.

Что это значит?

Скажем, у вас есть онлайн-магазин по продаже обуви. Цифровой идентичностью пользователей вашего приложения может быть номер кредитной карты, адрес доставки и история покупок. Их цифровая идентичность рассматривается в контексте вашего приложения. Это подводит нас к следующей теме…

Похожее:  SQUID и Kerberos-авторизация через Active Directory [RTzRa's hive]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *