.well-known endpoints
Эти эндпоинты реализуют стандарт OpenID Connect Discovery. Их основная задача — позволить вашему приложению автоматически узнавать все необходимые настройки, поддерживаемые функции и получать публичные ключи нашего сервера аутентификации.
Использование этих конфигураций сильно упрощает интеграцию и позволяет избежать хардкода ссылок и параметров на вашей стороне.
1. OpenID Configuration
Этот эндпоинт отдает единый конфигурационный JSON-документ (Discovery document). В нем описано все, что умеет наш OIDC-провайдер: адреса всех используемых эндпоинтов, поддерживаемые типы токенов (response_types_supported), алгоритмы подписи (id_token_signing_alg_values_supported), запрашиваемые права (scopes_supported) и возвращаемые поля (claims_supported).
URL эндпоинта:
GET https://api.flida.ru/.well-known/openid-configuration
Структура ответа
Пример ответа от сервера:
{
"issuer": "https://api.flida.ru",
"authorization_endpoint": "https://flida.ru/oauth",
"token_endpoint": "https://api.flida.ru/oidc/token",
"userinfo_endpoint": "https://api.flida.ru/oidc/userinfo",
"jwks_uri": "https://api.flida.ru/.well-known/jwks.json",
"response_types_supported": ["code"],
"subject_types_supported": ["pairwise"],
"id_token_signing_alg_values_supported": ["RS256"],
"scopes_supported": [
"openid",
"offline_access",
"email",
"name",
"nickname",
"phone",
"sex",
"date_of_birth"
],
"token_endpoint_auth_methods_supported": [
"client_secret_basic",
"client_secret_post"
],
"grant_types_supported": [
"authorization_code",
"refresh_token"
],
"code_challenge_methods_supported": [
"S256"
],
"claims_supported": [
"sub",
"iss",
"aud",
"exp",
"iat",
"date_of_birth",
"email",
"email_verified",
"family_name",
"given_name",
"middle_name",
"nickname",
"phone_number",
"phone_number_verified",
"sex"
]
}2. JSON Web Key Set (JWKS)
Этот URL отдает набор публичных ключей, которыми Флида ID подписывает выдаваемые ID токены.
Используйте эти ключи для проверки подписи id_token на вашем бэкенде.
URL эндпоинта:
GET https://api.flida.ru/.well-known/jwks.json
Почему это важно?
Когда ваш бэкенд получает id_token после успешного обмена code на токены, вы обязаны проверить его криптографическую подпись
(что его выпустили именно мы, и данные внутри не были подменены). Для проверки подписи алгоритмом RS256 требуется публичный ключ.
Вместо того чтобы сохранять этот ключ локально вручную, современные библиотеки авторизации автоматически обращаются к эндпоинту jwks_uri и получают самую свежую версию ключа по его kid.
Структура ответа
Пример ответа от сервера:
{
"keys": [
{
"alg": "RS256",
"e": "AQAB",
"kid": "key1",
"kty": "RSA",
"n": "pSQciKyyA5..._KcbQdKT...hw",
"use": "sig"
}
]
}