Вы когда-нибудь заходили на веб-сайт с помощью Google, Facebook, LinkedIn или даже Github? Как насчет загрузки файлов на веб-сайт прямо из облака, например из вашей учетной записи Google Drive?
Что ж, оба эти примера являются примерами веб-сайтов или приложений, получающих доступ к вашей информации, хранящейся на других веб-сайтах или в других службах. Но как этого добиться, не ставя под угрозу безопасность ваших личных данных и не предоставляя свои учетные данные стороннему приложению?
Возьмем, к примеру, Facebook; Facebook может использовать контакты, хранящиеся в вашей учетной записи Google, чтобы найти ваших друзей на платформе. Чтобы Facebook мог получить доступ к вашим контактам и найти ваших друзей, вам необходимо предоставить ему доступ к вашей учетной записи Google.
Несколько лет назад это было сделано очень грубым способом, когда вы давали Facebook свой адрес электронной почты Google и пароль Gmail, которые он использовал для входа в свою учетную запись Google от своего имени и доступа к своим контактам. Многие приложения, не только Facebook, таким образом реализовали авторизацию пользовательских данных, хранящихся на других сайтах.
С таким количеством сторонних приложений, реализующих авторизацию таким образом, у пользователей были короткие пути, поскольку им приходилось ставить под угрозу свою безопасность для доступа к службам. Злоумышленник-разработчик может легко использовать учетные данные пользователей в ущерб пользователям. Это то, что потребовало разработки OAuth.
По данным Internet Engineering Task Force (IETF), OAuth — это структура авторизации, которая позволяет сторонним приложениям получать доступ к службе от имени владельца ресурса. OAuth — это то, что позволяет пользователям предоставлять ограниченный доступ сторонним приложениям.
Это позволяет приложениям получать доступ к своим онлайн-ресурсам, таким как их профили или личные данные, хранящиеся в другом приложении, без необходимости раскрывать свои учетные данные для входа в стороннее приложение, пытающееся получить доступ к ресурсу.
Это часто называют делегированным доступом, когда пользователи предоставляют сторонним приложениям ограниченный доступ к своим ресурсам, размещенным в другой службе, без предоставления учетных данных своих пользователей.
OAuth 2.0 — наиболее широко используемая версия протокола OAuth, ключевой компонент веб-авторизации и аутентификации.
OAuth широко используется для аутентификации мобильных приложений, защиты API-интерфейсов, обеспечения единого входа в несколько приложений и делегированного доступа для третьих лиц, а также позволяет пользователям управлять разрешениями, предоставленными сторонним приложениям, и контролировать их.
Оглавление
Преимущества использования платформ OAuth с открытым исходным кодом.
Платформы OAuth с открытым исходным кодом относятся к реализациям стандарта OAuth с открытым исходным кодом. Поскольку приложения разрабатываются с использованием различных языков программирования и сред, платформы OAuth предоставляют библиотеки и инструменты, которые позволяют разработчикам легко интегрировать функции OAuth в свои приложения. Некоторые из преимуществ использования платформ OAuth с открытым исходным кодом включают в себя:
Качество и прозрачность кода
Платформы с открытым исходным кодом позволяют пользователям получать доступ к своему коду. Это выгодно тем, что многие разработчики с широким спектром навыков и опыта изучают код и могут выявить проблемы, которые они могут заметить в коде.
Это помогает гарантировать, что код самого высокого качества, без уязвимостей или ошибок. Компании также могут просмотреть код, чтобы определить, насколько хорошо он может удовлетворить их потребности, прежде чем приступить к использованию продукта.
Экономическая эффективность
Программные решения с открытым исходным кодом бесплатны для использования и, таким образом, могут помочь компаниям сэкономить на расходах, которые они понесут, перейдя на соответствующие платформы OAth. Преимущество этого заключается в том, что даже компании с небольшим бюджетом могут гарантировать, что безопасность их пользователей не будет скомпрометирована.
Избегайте привязки к поставщику
При использовании поставщиков OAuth с открытым исходным кодом вы можете легко переключаться между различными поставщиками OAuth без необходимости переделывать всю архитектуру приложения в соответствии с новым поставщиком.
Решения OAuth с открытым исходным кодом соответствуют общепринятым стандартам, что позволяет им обеспечивать совместимость и взаимодействие с другими системами. Это позволяет легко переключаться между различными решениями с открытым исходным кодом.
Поддержка сообщества
Решения с открытым исходным кодом часто поддерживаются большим сообществом разработчиков, работающих над их улучшением и выпуском обновлений программного обеспечения. Это гарантирует, что программное обеспечение не только работает со многими инструментами, которые используют разработчики, но и проблемы с программным обеспечением могут решаться быстрее, поскольку обязательно найдется кто-то, знакомый с программным обеспечением, готовый помочь.
Ключевые критерии оценки платформ OAuth с открытым исходным кодом
Некоторые из ключевых факторов, которые следует учитывать при оценке платформы OAuth с открытым исходным кодом, включают:
Меры безопасности и шифрования
Важно, чтобы используемое вами решение OAuth с открытым исходным кодом имело надежные меры безопасности и шифрования.
Это связано с тем, что платформы обрабатывают конфиденциальные пользовательские данные и ресурсы доступа. Платформа должна поддерживать безопасную связь, а также предоставлять механизмы для защиты токенов доступа.
Простота интеграции и удобные для разработчиков API
Поскольку платформы OAuth интегрированы в приложения, крайне важно, чтобы решение OAuth предлагало понятные и интуитивно понятные API, документацию и комплекты для разработки программного обеспечения (SDK), которые упрощают процесс интеграции.
Конечные точки платформы также должны быть хорошо документированы примерами кода и библиотеками для популярных языков программирования и сред.
Поддержка сообщества и активное развитие
Сильное активное сообщество пользователей и участников ресурса с открытым исходным кодом указывает на здоровую среду вокруг ресурсов. В данном случае это означает, что OAuth постоянно совершенствуется и используется.
Кроме того, активное сообщество может предоставить полезные ресурсы и поддержку, которые помогут вам понять и использовать решение OAuth с открытым исходным кодом.
Масштабируемость и производительность
Приложения часто имеют растущую пользовательскую базу по мере того, как все больше людей знакомятся с приложением. Поэтому важно, чтобы любое используемое вами решение OAuth поддерживало масштабирование по мере увеличения вашей пользовательской базы, а также могло обрабатывать большое количество одновременных запросов.
Параметры настройки и расширения
Решение OAuth должно иметь широкие возможности настройки, чтобы адаптироваться к различным бизнес-требованиям и логике для широкого круга пользователей. Проще говоря, предприятиям не нужно строить свою логику вокруг платформы OAuth.
Вместо этого решение OAuth должно быть достаточно настраиваемым и расширяемым, чтобы его можно было реализовать без изменения бизнес-логики. Этого можно достичь, разрешив добавление пользовательских потоков проверки подлинности, утверждений и атрибутов пользователя.
Принимая во внимание вышеизложенные соображения, вот некоторые из лучших решений OAuth с открытым исходным кодом для использования в вашем следующем проекте.
Супертокены
SuperTokens — это провайдер входа в систему с открытым исходным кодом, который может широко использоваться среди стартапов, таких как HackeRank, Skoot и Food Market Hub, а также используется инженерами, работающими в таких компаниях, как Google, Amazon и Meta, среди прочих.
SuperTokens предоставляет легко настраиваемые, расширяемые и переопределяемые компоненты, которые позволяют пользователям легко интегрировать аутентификацию пользователей в свои приложения.
SuperTokens не только легко и быстро интегрируется, но также предлагает готовые пользовательские интерфейсы для страниц регистрации и функции аутентификации пользователей из коробки. У пользователей также есть возможность быстро создать свой собственный логин, используя вспомогательные функции, поставляемые с SuperTokens.
Используя SuperTokens, вы реализуете вход в систему с паролем электронной почты, вход через социальные сети с использованием OAuth и вход в приложения без пароля. Вы также можете использовать социальные сети и пароль электронной почты на одном экране входа в свои приложения.
Цербос
Cerbos — это масштабируемая платформа авторизации с открытым исходным кодом, не зависящая от языка, которая была признана Business Wire лучшей в области безопасности API в 2022 году.
Cerbos, который является уровнем авторизации для реализации ролей и разрешений, работает с различными поставщиками удостоверений, включая Auth0, Magic, WorkOS, Okta и FusionAuth, среди прочих.
Cerbos позволяет вам централизованно управлять логикой авторизации во всех ваших приложениях и мгновенно вносить изменения в то, как ваши приложения обрабатывают авторизацию и аутентификацию.
Кроме того, Cerbos предлагает контекстно-зависимые определения ролей и атрибуты, а также предоставляет не зависящий от языка API, который можно использовать с любым техническим стеком.
В довершение всего, Cerbos не имеет состояния и размещается самостоятельно, и может размещаться на бессерверных платформах, в любом общедоступном или частном облаке или даже в частном центре обработки данных.
Заграничный пасспорт
Passport — это очень популярное промежуточное ПО для аутентификации для платформы Node.js, которое аутентифицирует входящие запросы в приложениях, созданных с помощью бэкенда Node.js.
Аутентификация выполняется с помощью плагинов, известных как стратегии. Passport предоставляет разработчикам крючки для управления действиями, которые необходимо предпринять в случае неудачной или успешной аутентификации.
Passport предлагает более 500 стратегий аутентификации и позволяет использовать единый вход с помощью OpenID и OAuth. Он также поддерживает постоянные сеансы, динамическую область действия и разрешения, реализацию пользовательских стратегий и простую обработку успешных и неудачных попыток аутентификации.
Кроме того, Passport.js не монтирует маршруты в приложениях Node.js и не предполагает какой-либо конкретной схемы базы данных, что позволяет разработчику принимать все решения на уровне приложения.
Auth.js
Auth.js — это решение для аутентификации с открытым исходным кодом, которое работает с различными платформами внешнего интерфейса, включая Next.js, SvelteKit и SolidStart, среди прочих.
Auth.js предназначен для работы с различными версиями OAuth. Он поддерживает аутентификацию без сохранения состояния с любым бэкэндом, аутентификацию по электронной почте/без пароля и веб-токены JSON вместе с сеансами базы данных.
Хотя Auth.js был разработан для бессерверных архитектур, его можно запускать где угодно, в том числе в AWS Lambda, Docker и Heroku.
Auth.js также гарантирует пользователям контроль над своими данными и может работать без базы данных, несмотря на встроенную поддержку популярных баз данных, таких как MySQL, Postgres, MongoDB, SQLite, MariaDB и Microsoft SQL Server.
Auth.js использует токены межсайтовой подделки запросов (CSRF) на маршрутах POST, шифрует веб-токены JSON и автоматически создает симметричные ключи подписи и шифрования для удобства разработчиков.
Брелок
Keycloak — очень популярное решение для управления идентификацией и доступом с открытым исходным кодом. Keycloak — это решение, основанное на стандартных протоколах и поддерживающее OAuth 2.0, язык разметки подтверждения безопасности (SAML) и OpenID Connect.
Будучи решением с открытым исходным кодом, Keycloak очень легко интегрируется и поставляется с такими функциями, как единый вход, который позволяет пользователям входить в несколько приложений через один вход в Keycloak.
Это также приносит пользу разработчикам, поскольку им не нужно заниматься аутентификацией и хранением пользователей, а также создавать формы входа в свои приложения.
Область, в которой KeyCloak сияет, — это простота интеграции с приложениями. KeyCloak позволяет легко добавлять возможность входа в приложения с помощью социальных сетей без необходимости изменять приложение или код.
Все это делается через консоль администратора, где вы также можете настроить дополнительные функции Keycloak, такие как федерация пользователей и посредничество в идентификации. Через консоль администратора вы также можете создавать и управлять приложениями и службами, а также настраивать политики авторизации.
Аперео КАС
Apereo CAS — это решение для единого входа с открытым исходным кодом и поставщик удостоверений. CAS поддерживает широкий спектр протоколов аутентификации, в том числе OAuth 2.0, SAML, OpenID, REST и WS-Federation и другие.
CAS поставляется со встроенной поддержкой управления паролями, уведомлениями, условиями использования и олицетворением.
CAS также поддерживает подключаемую аутентификацию, делегированную аутентификацию внешним поставщикам удостоверений, таким как Facebook, Twitter и OpenID Connect, а также многофакторную аутентификацию с помощью таких поставщиков, как Google Authenticator, Authy, YubiKey, Acceptto и Inwebo, среди прочих.
Чтобы использовать CAS, лучше всего использовать его с официально поддерживаемыми клиентскими платформами, включая Java, .NET, Apache и PHP.
Ори Кратос
Ory Kratos — это надежная и многофункциональная система управления пользователями, ориентированная на облако. Хотя Ory Kratos написан на Go, он поставляется с SDK для каждого языка программирования, а также с настраиваемым входом в систему, регистрацией и управлением профилями.
Кроме того, Ory Kratos может работать с любой инфраструктурой пользовательского интерфейса и требует минимального кода для его настройки.
Некоторые примечательные функции, которые поставляются с Ory Kratos, включают многофакторную аутентификацию с различными поставщиками, самостоятельный вход и регистрацию, вход в социальную сеть, проверку и восстановление учетной записи, а также управление пользователями.
Управление пользователями позволяет создавать, обновлять и удалять удостоверения и их данные в вашей пользовательской базе. Наконец, Ory Kratos позволяет использовать настраиваемые модели идентификации, где вы можете создавать свои собственные интерфейсы и определять настраиваемые поля, такие как имена, адреса или любимый питомец.
Логто
Согласно его документации, Logto — это экономичная альтернатива с открытым исходным кодом Auth0, которая представляет собой проприетарное решение для аутентификации и авторизации. Logto предлагает все функции, необходимые для безопасной аутентификации и авторизации по более доступным ценам.
Logto поставляется с готовым к использованию API управления, который можно использовать в качестве поставщика аутентификации. Он также имеет SDK, которые позволяют легко и быстро интегрировать Logto с любым приложением, которое вы создаете.
OpenID Connect Connect (OIDC), который расширяет протокол авторизации OAuth 2.0, используется для аутентификации, а для авторизации используется управление доступом на основе ролей (RBAC).
С помощью LogTo ваши приложения могут реализовать вход через социальные сети без пароля и работать с пользователями, которые забыли свои учетные данные для входа. Чтобы сделать разработку еще проще и быстрее, LogTo предлагает красивые готовые компоненты пользовательского интерфейса с настраиваемым CSS.
Пользователи также получают доступ к своей облачной платформе, где они могут настраивать, интегрировать и предварительно просматривать аутентификацию, которую они реализуют в своем приложении.
Заключение
При внедрении аутентификации и авторизации в ваше приложение существует множество решений с открытым исходным кодом, которые сэкономят вам и вашему бизнесу кучу денег. Рассмотрите любое из решений, представленных в статье, для защиты вашего бизнеса и важных пользовательских данных.
Вы также можете изучить некоторые лучшие платформы аутентификации пользователей.