En esta página

QAbstractOAuth2 Class

La clase QAbstractOAuth2 es la base de todas las implementaciones de métodos de autenticación OAuth 2. Más...

Cabecera: #include <QAbstractOAuth2>
CMake: find_package(Qt6 REQUIRED COMPONENTS NetworkAuth)
target_link_libraries(mytarget PRIVATE Qt6::NetworkAuth)
qmake: QT += networkauth
Hereda: QAbstractOAuth
Heredado por:

QOAuth2AuthorizationCodeFlow y QOAuth2DeviceAuthorizationFlow

Tipos públicos

(since 6.9) enum class NonceMode { Automatic, Enabled, Disabled }

Propiedades

Funciones públicas

QAbstractOAuth2(QObject *parent = nullptr)
QAbstractOAuth2(QNetworkAccessManager *manager, QObject *parent = nullptr)
virtual ~QAbstractOAuth2()
bool autoRefresh() const
void clearNetworkRequestModifier()
QString clientIdentifierSharedKey() const
virtual QUrl createAuthenticatedUrl(const QUrl &url, const QVariantMap &parameters = QVariantMap())
QDateTime expirationAt() const
QSet<QByteArray> grantedScopeTokens() const
QString idToken() const
QString nonce() const
QAbstractOAuth2::NonceMode nonceMode() const
std::chrono::seconds refreshLeadTime() const
QString refreshToken() const
QSet<QByteArray> requestedScopeTokens() const
QString responseType() const
QString scope() const
void setAutoRefresh(bool enable)
void setClientIdentifierSharedKey(const QString &clientIdentifierSharedKey)
(since 6.9) void setNetworkRequestModifier(const QAbstractOAuth2::ContextTypeForFunctor<Functor> *context, Functor &&callback)
void setNonce(const QString &nonce)
void setNonceMode(QAbstractOAuth2::NonceMode mode)
void setRefreshLeadTime(std::chrono::seconds leadTime)
void setRefreshToken(const QString &refreshToken)
void setRequestedScopeTokens(const QSet<QByteArray> &tokens)
void setScope(const QString &scope)
(since 6.5) void setSslConfiguration(const QSslConfiguration &configuration)
void setState(const QString &state)
void setTokenUrl(const QUrl &tokenUrl)
void setUserAgent(const QString &userAgent)
(since 6.5) QSslConfiguration sslConfiguration() const
QString state() const
QUrl tokenUrl() const
QString userAgent() const

Funciones públicas reimplementadas

(deprecated in 6.11) virtual QNetworkReply *deleteResource(const QUrl &url, const QVariantMap &parameters = QVariantMap()) override
(deprecated in 6.11) virtual QNetworkReply *get(const QUrl &url, const QVariantMap &parameters = QVariantMap()) override
(deprecated in 6.11) virtual QNetworkReply *head(const QUrl &url, const QVariantMap &parameters = QVariantMap()) override
(deprecated in 6.11) virtual QNetworkReply *post(const QUrl &url, const QVariantMap &parameters = QVariantMap()) override
virtual void prepareRequest(QNetworkRequest *request, const QByteArray &verb, const QByteArray &body = QByteArray()) override
(deprecated in 6.11) virtual QNetworkReply *put(const QUrl &url, const QVariantMap &parameters = QVariantMap()) override

Ranuras públicas

(since 6.9) void refreshTokens()

Señales

(since 6.9) void accessTokenAboutToExpire()
void authorizationCallbackReceived(const QVariantMap &data)
void autoRefreshChanged(bool enable)
void clientIdentifierSharedKeyChanged(const QString &clientIdentifierSharedKey)
(until 6.13) void error(const QString &error, const QString &errorDescription, const QUrl &uri)
void expirationAtChanged(const QDateTime &expiration)
void grantedScopeTokensChanged(const QSet<QByteArray> &tokens)
void idTokenChanged(const QString &idToken)
void nonceChanged(const QString &nonce)
void nonceModeChanged(QAbstractOAuth2::NonceMode mode)
void refreshLeadTimeChanged(std::chrono::seconds leadTime)
void refreshTokenChanged(const QString &refreshToken)
void requestedScopeTokensChanged(const QSet<QByteArray> &tokens)
void scopeChanged(const QString &scope)
(since 6.9) void serverReportedErrorOccurred(const QString &error, const QString &errorDescription, const QUrl &uri)
(since 6.5) void sslConfigurationChanged(const QSslConfiguration &configuration)
void stateChanged(const QString &state)
void tokenUrlChanged(const QUrl &tokenUrl)
void userAgentChanged(const QString &userAgent)

Ranuras protegidas

(since 6.9) void refreshTokensImplementation()

Descripción detallada

Esta clase define la interfaz básica de las clases de autenticación OAuth 2. Al heredar esta clase, puedes crear métodos de autenticación personalizados utilizando el estándar OAuth 2 para diferentes servicios web.

Puedes encontrar una descripción del funcionamiento de OAuth 2 en: El marco de autorización OAuth 2.0

Documentación del tipo de miembro

[since 6.9] enum class QAbstractOAuth2::NonceMode

Lista de modos nonce disponibles.

ConstanteValorDescripción
QAbstractOAuth2::NonceMode::Automatic0El nonce se envía si requested scope contiene openid. Este es el modo por defecto, y envía nonce sólo cuando es relevante para los flujos de autenticación OIDC.
QAbstractOAuth2::NonceMode::Enabled1Nonce se envía durante la fase de autorización.
QAbstractOAuth2::NonceMode::Disabled2Nonce no se envía durante la fase de autorización.

Este enum se introdujo en Qt 6.9.

Véase también nonce y OAuth 2.0 Overview.

Documentación de propiedades

[since 6.9] autoRefresh : bool

Esta propiedad habilita o deshabilita el refresco automático del token de acceso.

Esta propiedad habilita o deshabilita la actualización automática del token de acceso. Esto es útil para aplicaciones que requieren autorización ininterrumpida sin intervención del usuario.

Si esta propiedad es true, se llamará automáticamente a refreshTokens() cuando el token esté a punto de caducar y exista un refreshToken válido.

Esta propiedad se introdujo en Qt 6.9.

Funciones de acceso:

bool autoRefresh() const
void setAutoRefresh(bool enable)

Señal de notificador:

void autoRefreshChanged(bool enable)

Véase también refreshLeadTime y accessTokenAboutToExpire().

clientIdentifierSharedKey : QString

Esta propiedad contiene la clave compartida del cliente utilizada como contraseña si el servidor requiere autenticación para solicitar el token.

Funciones de acceso:

QString clientIdentifierSharedKey() const
void setClientIdentifierSharedKey(const QString &clientIdentifierSharedKey)

Señal de notificador:

void clientIdentifierSharedKeyChanged(const QString &clientIdentifierSharedKey)

[read-only] expiration : QDateTime

Esta propiedad contiene la hora de caducidad del token de acceso actual. Un valor no válido significa que el servidor de autorización no ha proporcionado una hora de caducidad válida.

Funciones de acceso:

QDateTime expirationAt() const

Señal notificadora:

void expirationAtChanged(const QDateTime &expiration)

Véase también QDateTime::isValid().

[read-only, since 6.9] grantedScopeTokens : QSet<QByteArray>

Esta propiedad contiene el ámbito concedido por el servidor de autorización.

El ámbito solicitado y el concedido pueden diferir. El usuario final puede haber optado por conceder sólo un subconjunto del ámbito, o las políticas del lado del servidor pueden cambiarlo. La aplicación debería estar preparada para manejar este escenario, y comprobar el ámbito concedido para ver si debería afectar a la lógica de la aplicación.

El servidor puede omitir por completo la indicación del ámbito concedido, tal y como se define en el RFC 6749. En este caso la implementación asume que el ámbito concedido es el mismo que el ámbito solicitado.

Esta propiedad se introdujo en Qt 6.9.

Funciones de acceso:

QSet<QByteArray> grantedScopeTokens() const

Señal de notificador:

void grantedScopeTokensChanged(const QSet<QByteArray> &tokens)

Véase también QAbstractOAuth2::requestedScopeTokens.

[read-only, since 6.9] idToken : QString

Esta propiedad contiene el token de ID de OpenID Connect recibido.

Esta propiedad se introdujo en Qt 6.9.

Funciones de acceso:

QString idToken() const

Notifier signal:

void idTokenChanged(const QString &idToken)

Véase también NonceMode, nonce, y Qt OpenID Connect Support.

[since 6.9] nonce : QString

Esta propiedad contiene la cadena enviada al servidor durante la autenticación. El nonce se utiliza para asociar las respuestas de token aplicables (OpenID Connect id_token en particular) con la etapa de autorización.

El propósito principal de nonce es mitigar los ataques de repetición. Garantiza que las respuestas de token recibidas responden a las solicitudes de autenticación iniciadas por la aplicación, evitando que los atacantes reutilicen los tokens en contextos no autorizados. Por lo tanto, es importante incluir la verificación del nonce como parte de la validación del token.

En la práctica, los proveedores de servidores de autorización pueden rechazar la solicitud de OpenID Connect si no se proporciona un nonce en la solicitud de autorización.

El token en sí es una cadena opaca y sólo debe contener caracteres seguros para URL para una compatibilidad máxima. Además, el token debe proporcionar la entropía adecuada para que los atacantes no puedan adivinarlo. No existen límites de tamaño estrictos para el nonce, y los proveedores de servidores de autorización pueden imponer sus propios tamaños mínimos y máximos.

Aunque nonce puede establecerse manualmente, las clases Qt generarán un nonce de 32 caracteres when needed si no se establece uno.

Esta propiedad se introdujo en Qt 6.9.

Funciones de acceso:

QString nonce() const
void setNonce(const QString &nonce)

Notifier signal:

void nonceChanged(const QString &nonce)

Véase también nonceMode y Qt OpenID Connect Support.

[since 6.9] nonceMode : NonceMode

Esta propiedad contiene el modo nonce actual (si se usa o no nonce).

Esta propiedad se introdujo en Qt 6.9.

Funciones de acceso:

QAbstractOAuth2::NonceMode nonceMode() const
void setNonceMode(QAbstractOAuth2::NonceMode mode)

Notifier signal:

void nonceModeChanged(QAbstractOAuth2::NonceMode mode)

Véase también NonceMode y nonce.

[since 6.9] refreshLeadTime : std::chrono::seconds

Esta propiedad define la antelación con la que se emite la señal accessTokenAboutToExpire() con respecto a la expiración del token de acceso.

Esta propiedad especifica el intervalo de tiempo (en segundos) antes de la expiración del token de acceso actual, cuando se emite la señal accessTokenAboutToExpire(). El valor establecido para esta propiedad debe ser una duración positiva.

Este intervalo permite a la aplicación refrescar el token con suficiente antelación, asegurando una autorización continua sin interrupciones.

Si esta propiedad no se establece explícitamente, o el leadTime proporcionado es mayor que el tiempo de vida del token, el leadTime por defecto es el 5% del tiempo de vida restante del token, pero no menos de 10 segundos antes de la expiración (dejando tiempo para que se complete la solicitud de actualización).

Nota: La señal de expiración sólo funciona si el servidor de autorización ha proporcionado un tiempo de expiración adecuado.

Esta propiedad se introdujo en Qt 6.9.

Funciones de acceso:

std::chrono::seconds refreshLeadTime() const
void setRefreshLeadTime(std::chrono::seconds leadTime)

Señal de notificador:

void refreshLeadTimeChanged(std::chrono::seconds leadTime)

Véase también autoRefresh.

refreshToken : QString

Esta propiedad contiene el token de actualización utilizado para obtener nuevos tokens de acceso.

Los tokens de actualización suelen tener una vida útil más larga que los tokens de acceso, por lo que tiene sentido guardarlos para su uso posterior.

Funciones de acceso:

QString refreshToken() const
void setRefreshToken(const QString &refreshToken)

Señal notificadora:

void refreshTokenChanged(const QString &refreshToken)

Véase también setRefreshToken().

[since 6.9] requestedScopeTokens : QSet<QByteArray>

Esta propiedad contiene el ámbito deseado que define los permisos solicitados por el cliente.

Nota: Los tokens de ámbito están limitados a un subconjunto de caracteres US-ASCII imprimibles. El uso de caracteres fuera de este rango no está soportado.

Esta propiedad se introdujo en Qt 6.9.

Funciones de acceso:

QSet<QByteArray> requestedScopeTokens() const
void setRequestedScopeTokens(const QSet<QByteArray> &tokens)

Señal de notificador:

void requestedScopeTokensChanged(const QSet<QByteArray> &tokens)

Véase también QAbstractOAuth2::grantedScopeTokens.

[until 6.13] scope : QString

Está previsto que esta propiedad desaparezca en la versión 6.13.

Utilice en su lugar las propiedades requestedScopeTokens y grantedScopeTokens. Esta propiedad será eliminada en Qt 7.

Esta propiedad contiene el ámbito deseado que define los permisos solicitados por el cliente.

El valor del ámbito se actualiza al valor del ámbito concedido por el servidor de autorización. En caso de una respuesta de ámbito vacía, el ámbito solicitado se asume como concedido y no cambia.

El hecho de que esta propiedad tenga dos funciones diferentes, primero como ámbito solicitado y después como ámbito concedido, es un artefacto histórico. Se recomienda que todo el código nuevo utilice QAbstractOAuth2::requestedScopeTokens y QAbstractOAuth2::grantedScopeTokens.

Funciones de acceso:

QString scope() const
void setScope(const QString &scope)

Señal de notificador:

void scopeChanged(const QString &scope)

Véase también QAbstractOAuth2::grantedScopeTokens y QAbstractOAuth2::requestedScopeTokens.

state : QString

Esta propiedad contiene la cadena enviada al servidor durante la autenticación. El estado se utiliza para identificar y validar la solicitud cuando se recibe la devolución de llamada.

Ciertos caracteres son ilegales en el elemento state (ver RFC 6749). El uso de caracteres ilegales podría provocar un desajuste involuntario del estado y una autorización OAuth 2 fallida. Por lo tanto, si se intenta establecer un valor que contiene caracteres ilegales, el estado se ignora y se registra una advertencia.

Funciones de acceso:

QString state() const
void setState(const QString &state)

Señal de notificador:

void stateChanged(const QString &state)

[since 6.9] tokenUrl : QUrl

Esta propiedad contiene la URL del token endpoint que se utiliza para obtener tokens. Dependiendo del caso de uso y del soporte del servidor de autorización, estos tokens pueden ser tokens de acceso, tokens de actualización y tokens de ID.

Los tokens suelen recuperarse una vez completada la fase de autorización, y el punto final de tokens también puede utilizarse para actualizar los tokens según sea necesario.

Por ejemplo, QOAuth2AuthorizationCodeFlow utiliza esta url para emitir una solicitud de token de acceso, y QOAuth2DeviceAuthorizationFlow utiliza esta url para solicitar un token de acceso.

Esta propiedad se introdujo en Qt 6.9.

Funciones de acceso:

QUrl tokenUrl() const
void setTokenUrl(const QUrl &tokenUrl)

Señal de notificador:

void tokenUrlChanged(const QUrl &tokenUrl)

userAgent : QString

Esta propiedad contiene la cabecera User-Agent utilizada para crear las peticiones de red.

El valor por defecto es "QtOAuth/1.0 (+https://www.qt.io)".

Funciones de acceso:

QString userAgent() const
void setUserAgent(const QString &userAgent)

Señal del notificador:

void userAgentChanged(const QString &userAgent)

Documentación de funciones miembro

[explicit] QAbstractOAuth2::QAbstractOAuth2(QObject *parent = nullptr)

Construye un objeto QAbstractOAuth2 usando parent como padre.

[explicit] QAbstractOAuth2::QAbstractOAuth2(QNetworkAccessManager *manager, QObject *parent = nullptr)

Construye un objeto QAbstractOAuth2 usando parent como padre y establece manager como gestor de acceso a la red.

[virtual noexcept] QAbstractOAuth2::~QAbstractOAuth2()

Destruye la instancia QAbstractOAuth2.

[signal, since 6.9] void QAbstractOAuth2::accessTokenAboutToExpire()

Esta señal se emite cuando el código de acceso está a punto de caducar.

La emisión de esta señal requiere que el token de acceso tenga una hora de caducidad válida. Una alternativa para manejar esta señal manualmente es utilizar autoRefresh.

Esta función se introdujo en Qt 6.9.

Véase también refreshLeadTime, autoRefresh, y refreshTokens().

[signal] void QAbstractOAuth2::authorizationCallbackReceived(const QVariantMap &data)

Señal emitida cuando el servidor de respuesta recibe la devolución de llamada de autorización del servidor: data contiene los valores recibidos del servidor.

void QAbstractOAuth2::clearNetworkRequestModifier()

Borra el modificador de solicitud de red.

Véase también setNetworkRequestModifier().

[virtual invokable] QUrl QAbstractOAuth2::createAuthenticatedUrl(const QUrl &url, const QVariantMap &parameters = QVariantMap())

La URL devuelta se basa en url, combinándola con la dada parameters y el token de acceso.

Nota: Esta función puede invocarse a través del sistema de metaobjetos y desde QML. Véase Q_INVOKABLE.

[signal, until 6.13] void QAbstractOAuth2::error(const QString &error, const QString &errorDescription, const QUrl &uri)

Esta función quedará obsoleta en la versión 6.13.

Utilice serverReportedErrorOccurred en su lugar

Señal emitida cuando el servidor responde a la solicitud de autorización con un error tal y como se define en RFC 6749 error response.

error es el nombre del error; errorDescription describe el error y uri es un URI opcional que contiene más información sobre el error.

Véase también QAbstractOAuth::requestFailed() y QAbstractOAuth2::serverReportedErrorOccurred().

[override virtual] void QAbstractOAuth2::prepareRequest(QNetworkRequest *request, const QByteArray &verb, const QByteArray &body = QByteArray())

Reimplementa: QAbstractOAuth::prepareRequest(QNetworkRequest *request, const QByteArray &verb, const QByteArray &body).

QString QAbstractOAuth2::refreshToken() const

Obtiene el token de actualización actual.

Los tokens de actualización suelen tener una vida útil más larga que los tokens de acceso, por lo que tiene sentido guardarlos para su uso posterior.

Devuelve el refresh token actual o una cadena vacía, si no hay refresh token disponible.

Nota: Función Getter para la propiedad refreshToken.

Véase también setRefreshToken().

[slot, since 6.9] void QAbstractOAuth2::refreshTokens()

Llama a esta función para refrescar los tokens. La función llama a refreshTokensImplementation() para realizar la actualización.

Esta función se introdujo en Qt 6.9.

Véase también refreshTokensImplementation() y autoRefresh.

[protected slot, since 6.9] void QAbstractOAuth2::refreshTokensImplementation()

Esta ranura es llamada por refreshTokens() para enviar la solicitud de actualización de token.

Las clases derivadas deben reimplementar esta ranura para soportar el refresco de tokens:

class MyClass : public QAbstractOAuth2 { ...protected Q_SLOTS: void refreshTokensImplementation() QT7_ONLY(override); };void MyClass::refreshTokensImplementation(){
    qDebug("refresh");
}

Esta función se introdujo en Qt 6.9.

Véase también autoRefresh y accessTokenAboutToExpire().

QString QAbstractOAuth2::responseType() const

Devuelve el response_type utilizado.

[signal, since 6.9] void QAbstractOAuth2::serverReportedErrorOccurred(const QString &error, const QString &errorDescription, const QUrl &uri)

Señal emitida cuando el servidor responde a la solicitud de autorización con un error tal y como se define en RFC 6749 error response.

error es el nombre del error; errorDescription describe el error y uri es un URI opcional que contiene más información sobre el error.

Para capturar todos los errores, incluidos estos errores definidos en RFC, con una única señal, utilice QAbstractOAuth::requestFailed().

Esta función se introdujo en Qt 6.9.

[since 6.9] template <typename Functor, QAbstractOAuth2::if_compatible_callback<Functor> = true> void QAbstractOAuth2::setNetworkRequestModifier(const QAbstractOAuth2::ContextTypeForFunctor<Functor> *context, Functor &&callback)

Establece la función de modificación de peticiones de red en callback. Esta función se utiliza para personalizar las peticiones de red enviadas al servidor.

callback tiene que implementar la firma void(QNetworkRequest&, QAbstractOAuth::Stage). QNetworkRequest callback puede ser un puntero de función, lambda, función miembro o cualquier objeto invocable. El QAbstractOAuth::Stage proporcionado se puede utilizar para comprobar a qué etapa se refiere la solicitud (solicitud de token, solicitud de actualización de token o solicitud de autorización en el caso de QOAuth2DeviceAuthorizationFlow).

context controla el tiempo de vida de las llamadas, e impide el acceso a los recursos desasignados en caso de que context sea destruido. En otras palabras, si el objeto proporcionado como contexto se destruye, las llamadas de retorno no se ejecutarán. context debe apuntar a un QObject válido (y en caso de que la llamada de retorno sea una función miembro, necesita tenerlo realmente). Dado que los resultados de la llamada de retorno se utilizan inmediatamente, context debe residir en el mismo hilo que la instancia QAbstractOAuth2.

Esta función se introdujo en Qt 6.9.

Ver también clearNetworkRequestModifier() y QNetworkRequest.

void QAbstractOAuth2::setRefreshToken(const QString &refreshToken)

Establece el nuevo token de actualización refreshToken que se utilizará.

Se puede utilizar un token de actualización personalizado para actualizar el token de acceso a través de este método y, a continuación, actualizar el token de acceso a través de refreshTokens().

Nota: Función Setter para la propiedad refreshToken.

Véase también refreshToken().

[since 6.5] void QAbstractOAuth2::setSslConfiguration(const QSslConfiguration &configuration)

Establece el TLS configuration que se utilizará cuando se establezca una conexión TLS mutua entre el cliente y el Servidor de Autorización.

Esta función se introdujo en Qt 6.5.

Véase también sslConfiguration() y sslConfigurationChanged().

[since 6.5] QSslConfiguration QAbstractOAuth2::sslConfiguration() const

Devuelve la configuración TLS a utilizar cuando se establece una conexión TLS mutua entre el cliente y el Servidor de Autorización.

Esta función se introdujo en Qt 6.5.

Véase también setSslConfiguration() y sslConfigurationChanged().

[signal, since 6.5] void QAbstractOAuth2::sslConfigurationChanged(const QSslConfiguration &configuration)

La señal se emite cuando la configuración TLS ha cambiado. El parámetro configuration contiene la nueva configuración TLS.

Esta función se introdujo en Qt 6.5.

Véase también sslConfiguration() y setSslConfiguration().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.