Sur cette page

QAbstractOAuth2 Class

La classe `QAbstractOAuth2` sert de base à toutes les implémentations des méthodes d'authentification OAuth 2. En savoir plus...

En-tête : #include <QAbstractOAuth2>
CMake : find_package(Qt6 REQUIRED COMPONENTS NetworkAuth)
target_link_libraries(mytarget PRIVATE Qt6::NetworkAuth)
qmake : QT += networkauth
Hérite de : QAbstractOAuth
Hérité par :

QOAuth2AuthorizationCodeFlow et QOAuth2DeviceAuthorizationFlow

Types publics

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

Propriétés

Fonctions publiques

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

Fonctions publiques réimplémentées

(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

Slots publics

(since 6.9) void refreshTokens()

Signaux

(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)

Slots protégés

(since 6.9) void refreshTokensImplementation()

Description détaillée

Cette classe définit l'interface de base des classes d'authentification OAuth 2. En héritant de cette classe, vous pouvez créer des méthodes d'authentification personnalisées utilisant la norme OAuth 2 pour différents services Web.

Vous trouverez une description du fonctionnement d’OAuth 2 dans : Le cadre d’autorisation OAuth 2.0

Documentation sur les types de membres

[since 6.9] enum class QAbstractOAuth2::NonceMode

Liste des modes de nonce disponibles.

ConstanteValeurDescription
QAbstractOAuth2::NonceMode::Automatic0Le nonce est envoyé si l'requested scope contient openid. Il s'agit du mode par défaut, qui n'envoie nonce que lorsque cela est pertinent pour les flux d'authentification OIDC.
QAbstractOAuth2::NonceMode::Enabled1Le nonce est envoyé pendant la phase d’autorisation.
QAbstractOAuth2::NonceMode::Disabled2Le nonce n’est pas envoyé pendant la phase d’autorisation. Cela désactive la protection contre la relecture de l’ id_token OpenID Connect.

Cette énumération a été introduite dans Qt 6.9.

Voir également Présentationd’ nonce et Présentation d’OAuth 2.0.

Documentation sur les propriétés

[since 6.9] autoRefresh : bool

Cette propriété active ou désactive l'actualisation automatique du jeton d'accès.

Cette propriété active ou désactive l'actualisation automatique du jeton d'accès. Elle est utile pour les applications qui nécessitent une autorisation ininterrompue sans intervention de l'utilisateur.

Si cette propriété est définie sur « true », la méthode refreshTokens() sera automatiquement appelée lorsque le jeton est sur le point d'expirer et qu'un jeton refreshToken valide existe.

Cette énumération a été introduite dans Qt 6.9.

Fonctions d'accès :

bool autoRefresh() const
void setAutoRefresh(bool enable)

Signal de notification :

void autoRefreshChanged(bool enable)

Voir également ` refreshLeadTime ` et ` accessTokenAboutToExpire()`.

clientIdentifierSharedKey : QString

Cette propriété contient la clé partagée du client utilisée comme mot de passe si le serveur exige une authentification pour demander le jeton.

Fonctions d'accès :

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

Signal de notification :

void clientIdentifierSharedKeyChanged(const QString &clientIdentifierSharedKey)

[read-only] expiration : QDateTime

Cette propriété contient la date d'expiration du jeton d'accès actuel. Une valeur non valide signifie que le serveur d'autorisation n'a pas fourni de date d'expiration valide.

Fonctions d'accès :

QDateTime expirationAt() const

Signal de notification :

void expirationAtChanged(const QDateTime &expiration)

Voir également ` QDateTime::isValid()`.

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

Cette propriété contient le périmètre accordé par le serveur d'autorisation.

La portée demandée et la portée accordée peuvent différer. L’utilisateur final peut avoir choisi de n’accorder qu’un sous-ensemble de la portée, ou les politiques côté serveur peuvent la modifier. L’application doit être prête à gérer ce scénario et vérifier la portée accordée afin de déterminer si cela a une incidence sur la logique de l’application.

Le serveur peut omettre complètement d'indiquer le champ d'application accordé, comme le définit la RFC 6749. Dans ce cas, l'implémentation suppose que le champ d'application accordé est identique au champ d'application demandé.

Cette énumération a été introduite dans Qt 6.9.

Fonctions d’accès :

QSet<QByteArray> grantedScopeTokens() const

Signal de notification :

void grantedScopeTokensChanged(const QSet<QByteArray> &tokens)

Voir également QAbstractOAuth2::requestedScopeTokens.

[read-only, since 6.9] idToken : QString

Cette propriété contient le jeton d'identification OpenID Connect reçu.

Cette énumération a été introduite dans Qt 6.9.

Fonctions d'accès :

QString idToken() const

Signal de notification :

void idTokenChanged(const QString &idToken)

Voir également NonceMode, nonce et Prise en charge de Qt OpenID Connect.

[since 6.9] nonce : QString

Cette propriété contient la chaîne de caractères envoyée au serveur lors de l'authentification. Le nonce sert à associer les réponses de jeton pertinentes (notamment les « id_token » OpenID Connect) à la phase d'autorisation.

L’objectif principal du « nonce » est de limiter les attaques par rejeu. Il garantit que les réponses de jeton reçues correspondent bien aux demandes d’authentification initiées par l’application, empêchant ainsi les attaquants de réutiliser des jetons dans des contextes non autorisés. Il est donc important d’inclure la vérification du « nonce » dans le processus de validation du jeton.

Dans la pratique, les fournisseurs de serveurs d’autorisation peuvent refuser la requête OpenID Connect si aucun nonce n’est fourni dans la requête d’autorisation.

Le jeton lui-même est une chaîne opaque et ne doit contenir que des caractères compatibles avec les URL pour une compatibilité maximale. De plus, le jeton doit présenter une entropie suffisante pour être impossible à deviner par les attaquants. Il n’existe pas de limites strictes quant à la taille du nonce, et les fournisseurs de serveurs d’autorisation peuvent imposer leurs propres tailles minimales et maximales.

Bien que l’ nonce puisse être défini manuellement, les classes Qt génèrent un nonce de 32 caractères when needed si aucun n’est défini.

Cette énumération a été introduite dans Qt 6.9.

Fonctions d’accès :

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

Signal de notification :

void nonceChanged(const QString &nonce)

Voir également « nonceMode » et « Prise en charge de Qt OpenID Connect ».

[since 6.9] nonceMode : NonceMode

Cette propriété indique le mode « nonce » actuel (si le nonce est utilisé ou non).

Cette énumération a été introduite dans Qt 6.9.

Fonctions d'accès :

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

Signal de notification :

void nonceModeChanged(QAbstractOAuth2::NonceMode mode)

Voir également NonceMode et nonce.

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

Cette propriété définit le délai avec lequel le signal ` accessTokenAboutToExpire()` est émis par rapport à l'expiration du jeton d'accès.

Cette propriété spécifie l'intervalle de temps (en secondes) avant l'expiration du jeton d'accès actuel, au moment où le signal ` accessTokenAboutToExpire()` est émis. La valeur définie pour cette propriété doit être une durée positive.

Cet intervalle permet à l'application d'actualiser le jeton bien à l'avance, garantissant ainsi une autorisation continue sans interruption.

Si cette propriété n’est pas explicitement définie, ou si la valeur fournie pour `leadTime` est supérieure à la durée de vie du jeton, `leadTime` est alors défini par défaut à 5 % de la durée de vie restante du jeton, sans toutefois être inférieur à 10 secondes avant l’expiration (afin de laisser le temps nécessaire à l’exécution de la requête de rafraîchissement).

Remarque : le signald’expiration ne fonctionne que si le serveur d’autorisation a fourni une heure d’expiration valide.

Cette énumération a été introduite dans Qt 6.9.

Fonctions d’accès :

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

Signal Notifier :

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

Voir également autoRefresh.

refreshToken : QString

Cette propriété contient le jeton de rafraîchissement utilisé pour obtenir de nouveaux jetons d'accès.

Les jetons de rafraîchissement ont généralement une durée de vie plus longue que les jetons d'accès ; il est donc judicieux de les enregistrer en vue d'une utilisation ultérieure.

Fonctions d'accès :

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

Signal de notification :

void refreshTokenChanged(const QString &refreshToken)

Voir également setRefreshToken().

[since 6.9] requestedScopeTokens : QSet<QByteArray>

Cette propriété contient le champ d'application souhaité qui définit les autorisations demandées par le client.

Remarque : les jetonsde portée sont limités à un sous-ensemble de caractères US-ASCII imprimables. L'utilisation de caractères hors de cette plage n'est pas prise en charge.

Cette énumération a été introduite dans Qt 6.9.

Fonctions d'accès :

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

Signal de notification :

void requestedScopeTokensChanged(const QSet<QByteArray> &tokens)

Voir également QAbstractOAuth2::grantedScopeTokens.

[until 6.13] scope : QString

Cette énumération est prévue pour être obsolète à partir de la version 6.13.

Utilisez plutôt les propriétés ` requestedScopeTokens ` et ` grantedScopeTokens `. Cette propriété sera supprimée dans Qt 7.

Cette propriété contient le champ d'application souhaité qui définit les autorisations demandées par le client.

La valeur de la portée est mise à jour pour correspondre à celle accordée par le serveur d’autorisation. En cas de réponse vide concernant la portée, la portée demandée est considérée comme accordée et ne change pas.

Le fait que cette propriété remplisse deux rôles différents, d’abord celui de la portée demandée puis celui de la portée accordée, est un vestige historique. Il est recommandé d’utiliser QAbstractOAuth2::requestedScopeTokens et QAbstractOAuth2::grantedScopeTokens dans tout nouveau code.

Fonctions d’accès :

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

Signal de notification :

void scopeChanged(const QString &scope)

Voir également QAbstractOAuth2::grantedScopeTokens et QAbstractOAuth2::requestedScopeTokens.

state : QString

Cette propriété contient la chaîne envoyée au serveur lors de l'authentification. L'état sert à identifier et à valider la requête à la réception du rappel.

Si aucun état n’a été défini au début du flux d’autorisation, un état aléatoire de 32 caractères est généré automatiquement. Il s’agit de la méthode par défaut et recommandée.

Cet état constitue la principale protection contre la falsification de requêtes intersites (CSRF) et doit donc présenter un degré de hasard suffisant. Si vous le définissez manuellement, veillez à utiliser au moins 32 caractères aléatoires.

Certains caractères sont interdits dans l’élément « state » (voir RFC 6749). L’utilisation de caractères interdits pourrait entraîner une non-correspondance involontaire de l’état et l’échec de l’autorisation OAuth 2. Par conséquent, si vous tentez de définir une valeur contenant des caractères interdits, l’état est ignoré et un avertissement est consigné.

Fonctions d’accès :

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

Signal de notification :

void stateChanged(const QString &state)

[since 6.9] tokenUrl : QUrl

Cette propriété contient l'URL du point de terminaison des jetons, qui sert à obtenir des jetons. En fonction du cas d'utilisation et de la prise en charge par le serveur d'autorisation, ces jetons peuvent être des jetons d'accès, des jetons de rafraîchissement ou des jetons d'identité.

Les jetons sont généralement récupérés une fois la phase d'autorisation terminée, et le point de terminaison des jetons peut également être utilisé pour actualiser les jetons si nécessaire.

Par exemple, QOAuth2AuthorizationCodeFlow utilise cette URL pour envoyer une requête de jeton d'accès, et QOAuth2DeviceAuthorizationFlow utilise cette URL pour interroger le serveur afin d'obtenir un jeton d'accès.

Cette énumération a été introduite dans Qt 6.9.

Fonctions d’accès :

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

Signal de notification :

void tokenUrlChanged(const QUrl &tokenUrl)

userAgent : QString

Cette propriété contient l'en-tête User-Agent utilisé pour créer les requêtes réseau.

La valeur par défaut est « QtOAuth/1.0 (+https://www.qt.io) ».

Fonctions d'accès :

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

Signal de notification :

void userAgentChanged(const QString &userAgent)

Documentation des fonctions membres

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

Crée un objet QAbstractOAuth2 en utilisant parent comme objet parent.

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

Crée un objet QAbstractOAuth2 en utilisant parent comme objet parent et définit manager comme gestionnaire d'accès au réseau.

[virtual noexcept] QAbstractOAuth2::~QAbstractOAuth2()

Supprime l'instance de ` QAbstractOAuth2 `.

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

Ce signal est émis lorsque le jeton d'accès est sur le point d'expirer.

L'émission de ce signal nécessite que le jeton d'accès ait une date d'expiration valide. Une alternative pour gérer ce signal manuellement consiste à utiliser autoRefresh.

Cette fonction a été introduite dans Qt 6.9.

Voir également refreshLeadTime, autoRefresh et refreshTokens().

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

Signal émis lorsque le serveur de réponse reçoit le rappel d'autorisation du serveur : ` data ` contient les valeurs reçues du serveur.

void QAbstractOAuth2::clearNetworkRequestModifier()

Efface le modificateur de requête réseau.

Voir également setNetworkRequestModifier().

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

L'URL renvoyée est générée à partir de url, en y combinant l'parameters fournie et le jeton d'accès.

Remarque : cette fonction peut être appelée via le système de méta-objets et depuis QML. Voir Q_INVOKABLE.

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

Cette fonction sera obsolète à partir de la version 6.13.

Utilisez plutôt ` serverReportedErrorOccurred `

Signal émis lorsque le serveur d'autorisation signale une erreur lors du traitement d'une demande d'autorisation ou de jeton, y compris une demande de rafraîchissement de jeton, comme défini dans la réponse d'erreur de la RFC 6749.

error est le nom de l'erreur ; errorDescription décrit l'erreur et uri est une URI facultative contenant plus d'informations sur l'erreur.

Voir également QAbstractOAuth::requestFailed() et QAbstractOAuth2::serverReportedErrorOccurred().

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

Réimplémente : QAbstractOAuth::prepareRequest(QNetworkRequest *request, const QByteArray &verb, const QByteArray &body).

QString QAbstractOAuth2::refreshToken() const

Récupère le jeton de rafraîchissement actuel.

Les jetons de rafraîchissement ont généralement une durée de vie plus longue que les jetons d'accès ; il est donc judicieux de les enregistrer pour une utilisation ultérieure.

Renvoie le jeton d'actualisation actuel ou une chaîne vide s'il n'y a pas de jeton d'actualisation disponible.

Remarque : fonctionde récupération pour la propriété refreshToken.

Voir aussi setRefreshToken().

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

Appelez cette fonction pour actualiser les jetons. La fonction appelle refreshTokensImplementation() pour effectuer l'actualisation proprement dite.

Cette fonction a été introduite dans Qt 6.9.

Voir également refreshTokensImplementation() et autoRefresh.

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

Cette fonction est appelée par ` refreshTokens()` pour envoyer la requête de rafraîchissement du jeton.

Les classes dérivées doivent réimplémenter ce slot pour prendre en charge l'actualisation du jeton :

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

void MyClass::refreshTokensImplementation()
{
    qDebug("refresh");
}

Cette fonction a été introduite dans Qt 6.9.

Voir également autoRefresh et accessTokenAboutToExpire().

QString QAbstractOAuth2::responseType() const

Renvoie le type de réponse utilisé.

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

Signal émis lorsque le serveur d'autorisation signale une erreur lors du traitement d'une demande d'autorisation ou de jeton, y compris une demande de rafraîchissement de jeton, tel que défini dans la réponse d'erreur de la RFC 6749.

error est le nom de l'erreur ; errorDescription décrit l'erreur et uri est une URI facultative contenant plus d'informations sur l'erreur.

Pour intercepter toutes les erreurs, y compris ces erreurs définies par la RFC, à l'aide d'un seul signal, utilisez QAbstractOAuth::requestFailed().

Cette fonction a été introduite dans Qt 6.9.

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

Définit la fonction de modification des requêtes réseau sur callback. Cette fonction permet de personnaliser les requêtes réseau envoyées au serveur.

callback Doit implémenter la signature void(QNetworkRequest&, QAbstractOAuth::Stage). L’ QNetworkRequest fourni peut être directement modifié et est utilisé dès la fin du callback. callback peut être un pointeur de fonction, un lambda, une fonction membre ou tout objet appelable. L’ QAbstractOAuth::Stage fourni peut être utilisé pour vérifier à quelle étape se rapporte la requête (demande de jeton, demande de renouvellement de jeton ou demande d’autorisation dans le cas de QOAuth2DeviceAuthorizationFlow).

context contrôle la durée de vie des appels et empêche l’accès aux ressources désallouées si context est détruit. En d’autres termes, si l’objet fourni en tant que contexte est détruit, les callbacks ne seront pas exécutés. context doit pointer vers une QObject valide (et si le callback est une fonction membre, celle-ci doit effectivement exister). Étant donné que les résultats du callback sont utilisés immédiatement, context doit se trouver dans le même thread que l’instance QAbstractOAuth2.

Cette fonction a été introduite dans Qt 6.9.

Voir également clearNetworkRequestModifier() et QNetworkRequest.

void QAbstractOAuth2::setRefreshToken(const QString &refreshToken)

Définit le nouveau jeton d'actualisation refreshToken à utiliser.

Un jeton de rafraîchissement personnalisé peut être utilisé pour rafraîchir le jeton d'accès via cette méthode, puis le jeton d'accès peut être rafraîchi via refreshTokens().

Remarque : fonctionde définition pour la propriété refreshToken.

Voir également refreshToken().

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

Définit l'configuration TLS à utiliser lors de l'établissement d'une connexion TLS mutuelle entre le client et le serveur d'autorisation.

Cette fonction a été introduite dans Qt 6.5.

Voir également ` sslConfiguration()` et ` sslConfigurationChanged()`.

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

Renvoie la configuration TLS à utiliser lors de l'établissement d'une connexion TLS mutuelle entre le client et le serveur d'autorisation.

Cette fonction a été introduite dans Qt 6.5.

Voir également setSslConfiguration() et sslConfigurationChanged().

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

Le signal est émis lorsque la configuration TLS a changé. Le paramètre ` configuration ` contient la nouvelle configuration TLS.

Cette fonction a été introduite dans Qt 6.5.

Voir également sslConfiguration() et 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.