openid-configuration

[GET] /.well-known/openid-configuration

OpenID Configuration - это публичный служебный документ, который помогает OAuth и OpenID Connect библиотекам автоматически найти нужные адреса REGOS. Если ваша библиотека поддерживает discovery, обычно достаточно передать ей адрес issuer, после чего она сама прочитает этот документ и узнает, куда отправлять пользователя, где получать токены и где брать публичные ключи для проверки подписи.

Метод не требует параметров и вызывается без токена.

curl -X GET https://auth.regos.uz/.well-known/openid-configuration

Ответ содержит issuer, адрес авторизации, адрес получения токенов, адрес userinfo, адрес публичных ключей, поддерживаемые grant types, response types, алгоритмы подписи и список публичных claims. Список claims_supported показывает, какие поля REGOS может вернуть в id_token или /oauth/userinfo, если приложению выданы подходящие scope.

Пример сокращенного ответа:

{
  "issuer": "https://auth.regos.uz",
  "authorization_endpoint": "https://auth.regos.uz/oauth/authorize",
  "token_endpoint": "https://auth.regos.uz/oauth/token",
  "revocation_endpoint": "https://auth.regos.uz/oauth/revoke",
  "introspection_endpoint": "https://auth.regos.uz/oauth/introspect",
  "end_session_endpoint": "https://auth.regos.uz/oauth/logout",
  "authorization_response_iss_parameter_supported": true,
  "backchannel_logout_supported": true,
  "backchannel_logout_session_supported": true,
  "token_endpoint_auth_methods_supported": ["none", "client_secret_basic", "client_secret_post"],
  "code_challenge_methods_supported": ["S256", "plain"],
  "userinfo_endpoint": "https://auth.regos.uz/oauth/userinfo",
  "jwks_uri": "https://auth.regos.uz/jwks.json",
  "grant_types_supported": [
    "authorization_code",
    "refresh_token",
    "client_credentials"
  ],
  "response_types_supported": [
    "code"
  ],
  "id_token_signing_alg_values_supported": [
    "RS256"
  ],
  "claims_supported": [
    "sub",
    "sid",
    "auth_time",
    "email",
    "email_verified",
    "phone_number",
    "phone_number_verified",
    "given_name",
    "family_name",
    "company",
    "picture",
    "gender",
    "birthdate",
    "country_code",
    "timezone",
    "language_code",
    "telegram_chat_id",
    "roles"
  ]
}

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

Discovery описывает возможности сервера в целом, а не разрешения конкретного клиента. none означает возможность работы public-клиента без секрета. Наличие plain в общем списке не разрешает его public-клиентам: единственный допустимый для них метод PKCE — S256; confidential-клиенту plain должен быть разрешён отдельно. Обязательность PKCE определяется RequirePkce клиента, который включён у новых public-клиентов; временный вход всегда требует S256. Аналогично, grant type должен быть разрешён настройками самого клиента.

Device Authorization Flow и DPoP в текущей реализации не поддерживаются и не объявляются в discovery.