Аутентификация
Приложения Fedora, требующие аутентификации, должны поддерживать Fedora Account System на базе FreeIPA в качестве поставщика удостоверений.
Fedora Account System поддерживает fasjson как API только для чтения, OpenID Connect, OAuth 2.0 и другое.
Аутентификация
Все новые приложения должны использовать OpenID Connect для аутентификации пользователей.
|
Раньше мы поддерживали OpenID 2.0, но теперь он устарел и будет удалён. |
OpenID Connect — это слой обнаружения, построенный поверх OAuth 2.0, поэтому для понимания OpenID Connect вы должны сначала ознакомиться с OAuth 2.0 и его различными потоками; в части аутентификации OpenID Connect не отличается.
При запросе токена доступа в OAuth 2.0 клиентам разрешено указывать scope токена доступа. Этот scope указывает, для чего разрешено использовать токен. В большинстве случаев ваше приложение должно требовать собственный scope или scopes, чтобы пользователи могли выдавать токены доступа, которые можно использовать только с конкретным приложением. Для этого обратитесь к странице аутентификации в Wiki.
|
OpenID Connect требует запроса scope "openid". Несоблюдение этого приведёт к неопределённому поведению. |
Библиотеки
Authlib
Authlib — это библиотека Python для создания серверов и клиентов OAuth и OpenID Connect. Она имеет слои интеграции для Flask и Django в качестве серверов и клиентов протокола, а также слои интеграции клиента для Requests, HTTPX, Starlette и FastAPI. Как клиентское приложение, аутентифицирующееся через OpenID Connect, она наиболее полезна, если нужно поддерживать несколько поставщиков аутентификации (например, социальные сети).
Flask-OIDC
Flask-OIDC — это расширение Flask, которое упрощает использование Authlib при работе с Flask только с одним поставщиком аутентификации (например, с поставщиком удостоверений Fedora).
OAuthLib
OAuthLib — это низкоуровневая реализация OAuth 2.0 с поддержкой OpenID Connect. Она не привязана к какому-либо фреймворку HTTP-запросов. Как правило, вы будете использовать эту библиотеку только косвенно. Если вы изучаете эту библиотеку, обратите внимание, что это библиотека как для клиентов OAuth, так и для поставщиков OAuth. Наибольший интерес для вас представляет подпакет OAuth client.
Requests-OAuthlib
Requests-OAuthlib использует библиотеку Requests вместе с OAuthLib для предоставления простого в использовании интерфейса для клиентов OAuth 2.0. Если вам нужно добавить поддержку в приложение, для которого нет расширения для OAuthLib, вам следует использовать эту библиотеку.
Flask-OAuthlib
Flask-OAuthlib — это расширение Flask, построенное поверх Requests-OAuthlib. Оно поставляется с множеством примеров в каталоге examples репозитория. Приложения Flask в инфраструктуре Fedora должны использовать это расширение, если нет веской причины этого не делать (и эта причина задокументирована здесь).
Pyramid-OAuthLib
Pyramid-OAuthLib — это расширение Pyramid, использующее OAuthlib. Похоже, оно не активно поддерживается, но это разумная отправная точка для наших немногочисленных приложений на Pyramid.
Mozilla-Django-OIDC
Mozilla-Django-OIDC — это расширение Django для OpenID Connect.
Поток
Это схема классического потока аутентификации OpenID Connect.
FASJSON
Данные учётных записей хранятся в FreeIPA, но предоставляются пользователям и приложениям через FASJSON в виде REST API с ответами в формате JSON.
Аутентификация в FASJSON выполняется с помощью Kerberos keytab для приложений и Kerberos-билета для пользователей.
Ниже показан поток запроса к FASJSON, объясняющий, как он проксирует запросы к IPA.
Want to help? Learn how to contribute to Fedora Docs ›