Sur cette page

QAbstractOAuth2 Class

La classe QAbstractOAuth2 est la base de toutes les implémentations des méthodes d'authentification OAuth 2. Plus d'informations...

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

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

Emplacements 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 le standard OAuth 2 pour différents services web.

Une description du fonctionnement d'OAuth 2 peut être trouvée dans : Le cadre d'autorisation OAuth 2.0

Documentation sur les types de membres

[since 6.9] enum class QAbstractOAuth2::NonceMode

Liste des modes nonce disponibles.

ConstanteValeurDescription
QAbstractOAuth2::NonceMode::Automatic0Le nonce est envoyé si l'adresse requested scope contient openid. Il s'agit du mode par défaut, qui envoie nonce uniquement lorsque cela est pertinent pour les flux d'authentification de l'OIDC.
QAbstractOAuth2::NonceMode::Enabled1Le nonce est envoyé pendant la phase d'autorisation.
QAbstractOAuth2::NonceMode::Disabled2La nonce n'est pas envoyée pendant la phase d'autorisation.

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

Voir aussi nonce et OAuth 2.0 Overview.

Documentation sur les propriétés

[since 6.9] autoRefresh : bool

Cette propriété active ou désactive le rafraîchissement automatique du jeton d'accès.

Cette propriété active ou désactive le rafraîchissement automatique du jeton d'accès. Ceci est utile pour les applications qui requièrent une autorisation ininterrompue sans intervention de l'utilisateur.

Si cette propriété vaut true, refreshTokens() sera automatiquement appelé lorsque le jeton est sur le point d'expirer et qu'il existe un refreshToken valide.

Cette propriété a été introduite dans Qt 6.9.

Fonctions d'accès :

bool autoRefresh() const
void setAutoRefresh(bool enable)

Signal Notifier :

void autoRefreshChanged(bool enable)

Voir aussi 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 l'heure d'expiration du jeton d'accès actuel. Une valeur non valide signifie que le serveur d'autorisation n'a pas fourni d'heure d'expiration valide.

Fonctions d'accès :

QDateTime expirationAt() const

Signal Notificateur :

void expirationAtChanged(const QDateTime &expiration)

Voir aussi QDateTime::isValid().

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

Cette propriété contient l'étendue accordée par le serveur d'autorisation.

L'étendue demandée et l'étendue accordée peuvent être différentes. L'utilisateur final peut avoir choisi de n'accorder qu'un sous-ensemble de l'étendue, ou les politiques côté serveur peuvent la modifier. L'application doit être préparée à gérer ce scénario et vérifier l'étendue accordée pour voir si elle doit avoir un impact sur la logique de l'application.

Le serveur peut omettre d'indiquer la portée accordée, comme le définit la RFC 6749. Dans ce cas, l'implémentation suppose que la portée accordée est la même que la portée demandée.

Cette propriété a été introduite dans Qt 6.9.

Fonctions d'accès :

QSet<QByteArray> grantedScopeTokens() const

Notifier signal :

void grantedScopeTokensChanged(const QSet<QByteArray> &tokens)

Voir aussi QAbstractOAuth2::requestedScopeTokens.

[read-only, since 6.9] idToken : QString

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

Cette propriété a été introduite dans Qt 6.9.

Fonctions d'accès :

QString idToken() const

Notifier signal :

void idTokenChanged(const QString &idToken)

Voir aussi NonceMode, nonce, et Qt OpenID Connect Support.

[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 est utilisé pour associer les réponses des jetons applicables (OpenID Connect id_token en particulier) à l'étape d'autorisation.

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

En pratique, les fournisseurs de serveurs d'autorisation peuvent refuser la demande OpenID Connect si un nonce n'est pas fourni dans la demande 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 fournir une entropie adéquate afin qu'il soit impossible à deviner pour les attaquants. Il n'y a pas de limites strictes pour la taille des nonce, et les fournisseurs de serveurs d'autorisation peuvent imposer leurs propres tailles minimales et maximales.

Bien que l'adresse nonce puisse être définie manuellement, les classes Qt génèrent un nonce de 32 caractères when needed s'il n'y en a pas.

Cette propriété a été introduite dans Qt 6.9.

Fonctions d'accès :

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

Signal Notifier :

void nonceChanged(const QString &nonce)

Voir aussi nonceMode et Qt OpenID Connect Support.

[since 6.9] nonceMode : NonceMode

Cette propriété contient le mode nonce actuel (utilisation ou non du nonce).

Cette propriété a été introduite dans Qt 6.9.

Fonctions d'accès :

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

Signal Notifier :

void nonceModeChanged(QAbstractOAuth2::NonceMode mode)

Voir aussi NonceMode et nonce.

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

Cette propriété définit le délai d'émission du signal accessTokenAboutToExpire() 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, lorsque le signal accessTokenAboutToExpire() est émis. La valeur définie pour cette propriété doit être une durée positive.

Cet intervalle permet à l'application de rafraîchir le jeton bien à l'avance, ce qui garantit une autorisation continue sans interruption.

Si cette propriété n'est pas explicitement définie ou si le leadTime fourni est supérieur à la durée de vie du jeton, le leadTime est fixé par défaut à 5 % de la durée de vie restante du jeton, mais pas moins de 10 secondes avant l'expiration (ce qui laisse le temps à la demande de rafraîchissement de se terminer).

Remarque : le signal d'expiration ne fonctionne que si le serveur d'autorisation a fourni un délai d'expiration approprié.

Cette propriété a été introduite dans Qt 6.9.

Fonctions d'accès :

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

Signal Notificateur :

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

Voir aussi 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 logique de les conserver pour une utilisation ultérieure.

Fonctions d'accès :

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

Signal du notificateur :

void refreshTokenChanged(const QString &refreshToken)

Voir aussi setRefreshToken().

[since 6.9] requestedScopeTokens : QSet<QByteArray>

Cette propriété contient l'étendue souhaitée qui définit les autorisations demandées par le client.

Remarque : les jetons d'étendue sont limités à un sous-ensemble de caractères US-ASCII imprimables. L'utilisation de caractères en dehors de cette plage n'est pas prise en charge.

Cette propriété a été introduite dans Qt 6.9.

Fonctions d'accès :

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

Signal Notifier :

void requestedScopeTokensChanged(const QSet<QByteArray> &tokens)

Voir aussi QAbstractOAuth2::grantedScopeTokens.

[until 6.13] scope : QString

Cette propriété sera 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 l'étendue souhaitée qui définit les autorisations demandées par le client.

La valeur de l'étendue est mise à jour en fonction de la valeur de l'étendue accordée par le serveur d'autorisation. Dans le cas d'une réponse vide, l'étendue demandée est considérée comme accordée et ne change pas.

Le fait que cette propriété joue deux rôles différents, d'abord en tant que champ d'application demandé et ensuite en tant que champ d'application accordé, est un artefact historique. Il est recommandé à tout nouveau code d'utiliser QAbstractOAuth2::requestedScopeTokens et QAbstractOAuth2::grantedScopeTokens.

Fonctions d'accès :

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

Notifier signal :

void scopeChanged(const QString &scope)

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

state : QString

Cette propriété contient la chaîne de caractères envoyée au serveur lors de l'authentification. L'état est utilisé pour identifier et valider la demande lors de la réception du rappel.

Certains caractères sont illégaux dans l'élément state (voir RFC 6749). L'utilisation de caractères illégaux peut conduire à une inadéquation involontaire de l'état et à l'échec de l'autorisation OAuth 2. Par conséquent, si vous essayez de définir une valeur qui contient des caractères illégaux, l'état est ignoré et un avertissement est enregistré.

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 du jeton qui est utilisé pour obtenir des jetons. En fonction du cas d'utilisation et du support du serveur d'autorisation, ces jetons peuvent être des jetons d'accès, des jetons de rafraîchissement et des jetons d'identification.

Les jetons sont généralement récupérés une fois l'étape d'autorisation terminée, et le point de terminaison du jeton peut également être utilisé pour rafraîchir les jetons si nécessaire.

Par exemple, QOAuth2AuthorizationCodeFlow utilise cette url pour émettre une demande de jeton d'accès, et QOAuth2DeviceAuthorizationFlow utilise cette url pour demander un jeton d'accès.

Cette propriété a été introduite dans Qt 6.9.

Fonctions d'accès :

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

Notifier signal :

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 Notificateur :

void userAgentChanged(const QString &userAgent)

Member Function Documentation

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

Construit un objet QAbstractOAuth2 en utilisant parent comme parent.

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

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

[virtual noexcept] QAbstractOAuth2::~QAbstractOAuth2()

Détruit l'instance QAbstractOAuth2.

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

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

Pour que ce signal soit émis, il faut que le jeton d'accès ait une date d'expiration valide. Une alternative à la gestion manuelle de ce signal est d'utiliser autoRefresh.

Cette fonction a été introduite dans Qt 6.9.

Voir aussi 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 demande de réseau.

Voir aussi setNetworkRequestModifier().

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

L'URL renvoyée est basée sur url, en la combinant avec parameters et le jeton d'accès.

Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de 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 serverReportedErrorOccurred à la place

Signal émis lorsque le serveur répond à la demande d'autorisation par une erreur telle que définie dans la RFC 6749 error response.

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

Voir aussi 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

Obtient 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 conserver pour une utilisation ultérieure.

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

Note : Fonction Getter pour la propriété refreshToken.

Voir également setRefreshToken().

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

Appelez cette fonction pour rafraîchir les jetons. La fonction appelle refreshTokensImplementation() pour effectuer le rafraîchissement proprement dit.

Cette fonction a été introduite dans Qt 6.9.

Voir aussi refreshTokensImplementation() et autoRefresh.

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

Ce slot est appelé par refreshTokens() pour envoyer la demande de rafraîchissement du jeton.

Les classes dérivées doivent réimplémenter ce slot pour prendre en charge le rafraîchissement des jetons :

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 aussi 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 répond à la demande d'autorisation par une erreur telle que définie dans la RFC 6749 error response.

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

Pour attraper toutes les erreurs, y compris celles définies par la RFC, avec un seul signal, utilisez QAbstractOAuth::requestFailed().

Cette fonction a été introduite dans 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)

Définit la fonction de modification des demandes de réseau sur callback. Cette fonction est utilisée pour personnaliser les demandes de réseau envoyées au serveur.

callback doit implémenter la signature void(QNetworkRequest&, QAbstractOAuth::Stage). L'adresse QNetworkRequest fournie peut être modifiée directement et est utilisée juste après la fin du rappel. callback peut être un pointeur de fonction, une lambda, une fonction membre ou tout autre objet pouvant être appelé. L'adresse QAbstractOAuth::Stage fournie peut être utilisée pour vérifier à quelle étape la demande se rapporte (demande de jeton, demande de rafraîchissement 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 en cas de destruction de context. En d'autres termes, si l'objet fourni comme contexte est détruit, les rappels ne seront pas exécutés. context doit pointer vers un QObject valide (et dans le cas où le rappel est une fonction membre, il doit réellement l'avoir). Comme les résultats du callback sont utilisés immédiatement, context doit résider dans le même thread que l'instance QAbstractOAuth2.

Cette fonction a été introduite dans Qt 6.9.

Voir aussi clearNetworkRequestModifier() et QNetworkRequest.

void QAbstractOAuth2::setRefreshToken(const QString &refreshToken)

Définit le nouveau jeton de rafraîchissement 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 : fonction de définition de la propriété refreshToken.

Voir également refreshToken().

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

Définit le site TLS configuration à 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 aussi 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 aussi 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 aussi 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.