8 решений для авторизации/аутентификации с открытым исходным кодом (OAuth) для вашего следующего проекта

Вы когда-нибудь заходили на веб-сайт с помощью 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.

Пользователи также получают доступ к своей облачной платформе, где они могут настраивать, интегрировать и предварительно просматривать аутентификацию, которую они реализуют в своем приложении.

Заключение

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

Вы также можете изучить некоторые лучшие платформы аутентификации пользователей.