このページでは

QAbstractOAuth2 Class

QAbstractOAuth2 クラスは、OAuth 2 認証メソッドのすべての実装の基底クラスです。詳細...

ヘッダー: #include <QAbstractOAuth2>
CMake: find_package(Qt6 REQUIRED COMPONENTS NetworkAuth)
target_link_libraries(mytarget PRIVATE Qt6::NetworkAuth)
qmake: QT += networkauth
継承元: QAbstractOAuth
継承元:

QOAuth2AuthorizationCodeFlow およびQOAuth2DeviceAuthorizationFlow

パブリック型

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

プロパティ

パブリック関数

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

再実装されたパブリック関数

(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

パブリックスロット

(since 6.9) void refreshTokens()

シグナル

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

保護されたスロット

(since 6.9) void refreshTokensImplementation()

詳細な説明

このクラスは、OAuth 2 認証クラスの基本インターフェースを定義しています。このクラスを継承することで、さまざまな Web サービス向けに OAuth 2 標準を用いたカスタム認証メソッドを作成できます。

OAuth 2の仕組みに関する説明は、以下のドキュメントを参照してください:OAuth 2.0 認証フレームワーク

メンバ型のドキュメント

[since 6.9] enum class QAbstractOAuth2::NonceMode

利用可能なノンスモードの一覧。

定数値説明
QAbstractOAuth2::NonceMode::Automatic0requested scope にopenid が含まれている場合、ノンセが送信されます。これはデフォルトのモードであり、OIDC認証フローに関連する場合にのみnonce を送信します。
QAbstractOAuth2::NonceMode::Enabled1認証段階中にノンセが送信されます。
QAbstractOAuth2::NonceMode::Disabled2認可段階ではノンセは送信されません。これにより、OpenID Connectのid_token リプレイ保護が無効になります。

この列挙型は Qt 6.9 で導入されました。

「 nonce 」 および「OAuth 2.0の概要」も参照してください 。

プロパティのドキュメント

[since 6.9] autoRefresh : bool

このプロパティは、アクセストークンの自動更新を有効または無効にします。

このプロパティは、アクセストークンの自動更新を有効または無効にします。これは、ユーザーの操作なしに認証を中断なく維持する必要があるアプリケーションで役立ちます。

このプロパティが `true` に設定されている場合、トークンの有効期限が切れそうになり、かつ有効な `refreshToken ` が存在すると、refreshTokens() が自動的に呼び出されます。

この列挙型は Qt 6.9 で導入されました。

アクセス関数:

bool autoRefresh() const
void setAutoRefresh(bool enable)

Notifierシグナル:

void autoRefreshChanged(bool enable)

「 refreshLeadTime 」および「accessTokenAboutToExpire()」も参照してください 。

clientIdentifierSharedKey : QString

このプロパティには、トークンのリクエストに際してサーバーが認証を要求する場合に、パスワードとして使用されるクライアント共有キーが格納されます。

アクセス関数:

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

通知シグナル:

void clientIdentifierSharedKeyChanged(const QString &clientIdentifierSharedKey)

[read-only] expiration : QDateTime

このプロパティには、現在のアクセストークンの有効期限が格納されます。無効な値が指定されている場合は、認証サーバーから有効な有効期限が提供されていないことを意味します。

アクセス関数:

QDateTime expirationAt() const

Notifierシグナル:

void expirationAtChanged(const QDateTime &expiration)

関連項目: QDateTime::isValid()。

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

このプロパティには、認証サーバーによって付与されたスコープが格納されます。

要求されたスコープと付与されたスコープは異なる場合があります。エンドユーザーがスコープの一部のみを付与することを選択した場合や、サーバー側のポリシーによって変更された場合などが考えられます。アプリケーションはこのシナリオに対応できるよう準備し、付与されたスコープを確認して、アプリケーションのロジックに影響を与える必要があるかどうかを判断する必要があります。

RFC 6749で定義されているように、サーバーは付与されたスコープの指定を完全に省略する場合があります。この場合、実装では、付与されたスコープが要求されたスコープと同じであるとみなします。

この列挙型は Qt 6.9 で導入されました。

アクセス関数:

QSet<QByteArray> grantedScopeTokens() const

Notifierシグナル:

void grantedScopeTokensChanged(const QSet<QByteArray> &tokens)

QAbstractOAuth2::requestedScopeTokensも参照してください 。

[read-only, since 6.9] idToken : QString

このプロパティには、受信したOpenID Connect ID トークンが格納されます。

この列挙型は Qt 6.9 で導入されました。

アクセス関数:

QString idToken() const

Notifierシグナル:

void idTokenChanged(const QString &idToken)

関連項目: NonceMode 、nonce 、およびQt OpenID Connect サポート。

[since 6.9] nonce : QString

このプロパティには、認証中にサーバーに送信された文字列が格納されます。このノンスは、該当するトークン応答(特に OpenID Connect の「id_token 」)を認証段階に関連付けるために使用されます。

nonce の主な目的は、リプレイ攻撃を防止することです。これにより、受信したトークン応答がアプリケーションによって開始された認証リクエストに対するものであることが保証され、攻撃者が許可されていないコンテキストでトークンを再利用することを防ぎます。したがって、トークンの検証の一環としてnonceの検証を含めることが重要です。

実際には、認証リクエストにノンスが指定されていない場合、認証サーバーのベンダーは OpenID Connect リクエストを拒否することがあります。

トークン自体は不透明な文字列であり、互換性を最大限に高めるために、URL 対応文字のみを含む必要があります。さらに、トークンは攻撃者に推測されないよう、十分なエントロピーを備えている必要があります。ノンスには厳格なサイズ制限はなく、認証サーバーのベンダーが独自の最小・最大サイズを規定する場合があります。

nonce は手動で設定できますが、設定されていない場合、Qtのクラスは32文字のノンスwhen needed を生成します。

この列挙型は Qt 6.9 で導入されました。

アクセス関数:

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

Notifierシグナル:

void nonceChanged(const QString &nonce)

「 nonceMode 」および「Qt OpenID Connect サポート」も参照してください 。

[since 6.9] nonceMode : NonceMode

このプロパティは、現在のノンセモード(ノンセを使用するかどうか)を保持します。

この列挙型は Qt 6.9 で導入されました。

アクセス関数:

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

Notifier シグナル:

void nonceModeChanged(QAbstractOAuth2::NonceMode mode)

関連項目: NonceMode およびnonce 。

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

このプロパティは、アクセストークンの有効期限に対して、accessTokenAboutToExpire() シグナルがどの程度前に発行されるかを定義します。

このプロパティは、現在のアクセストークンの有効期限が切れる前に、accessTokenAboutToExpire() シグナルが送信されるまでの時間間隔(秒単位)を指定します。このプロパティに設定する値は、正の時間値でなければなりません。

この間隔により、アプリケーションは十分に前もってトークンを更新することができ、中断のない継続的な認証が保証されます。

このプロパティが明示的に設定されていない場合、または指定された leadTime がトークンの有効期間よりも長い場合、leadTime はデフォルトでトークンの残存有効期間の 5% となりますが、有効期限の 10 秒前より短い値にはなりません(更新リクエストが完了するための時間を確保するため)。

注:Expiration シグナルは、認証サーバーが適切な有効期限を提供している場合にのみ機能します。

この列挙型は Qt 6.9 で導入されました。

アクセス関数:

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

Notifier シグナル:

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

autoRefreshも参照してください 。

refreshToken : QString

このプロパティには、新しいアクセストークンを取得するために使用されるリフレッシュトークンが格納されます。

リフレッシュトークンは通常、アクセストークンよりも有効期間が長いため、後で使用するために保存しておくのが理にかなっています。

アクセス関数:

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

Notifierシグナル:

void refreshTokenChanged(const QString &refreshToken)

関連項目: ` setRefreshToken()`。

[since 6.9] requestedScopeTokens : QSet<QByteArray>

このプロパティには、クライアントが要求する権限を定義する、目的のスコープが格納されています。

注:スコープトークンは 、US-ASCIIの印刷可能文字のサブセットに限定されています。この範囲外の文字を使用することはサポートされていません。

この列挙型は Qt 6.9 で導入されました。

アクセス関数:

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

Notifier シグナル:

void requestedScopeTokensChanged(const QSet<QByteArray> &tokens)

QAbstractOAuth2::grantedScopeTokensも参照してください 。

[until 6.13] scope : QString

この列挙型は、バージョン 6.13 で非推奨となる予定です。

代わりに、requestedScopeTokens およびgrantedScopeTokens プロパティを使用してください。このプロパティは Qt 7 で削除される予定です。

このプロパティは、クライアントが要求する権限を定義する目的のスコープを保持します。

スコープの値は、認証サーバーによって付与されたスコープの値に更新されます。スコープの応答が空の場合、要求されたスコープが付与されたものとみなされ、変更されません。

このプロパティが、最初は要求されたスコープとして、後には付与されたスコープとしてという2つの異なる役割を果たしているという事実は、歴史的な名残です。新しいコードでは、QAbstractOAuth2::requestedScopeTokens およびQAbstractOAuth2::grantedScopeTokens を使用することを推奨します。

アクセス関数:

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

通知シグナル:

void scopeChanged(const QString &scope)

QAbstractOAuth2::grantedScopeTokens およびQAbstractOAuth2::requestedScopeTokensも参照してください 。

state : QString

このプロパティには、認証中にサーバーへ送信された文字列が格納されます。この状態情報は、コールバックを受信した際にリクエストを識別および検証するために使用されます。

認証フローの開始時にstateが設定されていない場合、32文字のランダムなstateが自動的に生成されます。これがデフォルトの設定であり、推奨される方法です。

このステートは、クロスサイトリクエストフォージェリ(CSRF)に対する主要な防御手段であるため、十分なランダム性を備えている必要があります。手動で設定する場合は、少なくとも32文字のランダムな文字列を使用することを検討してください。

state要素では、特定の文字の使用が禁止されています(RFC 6749を参照)。禁止文字を使用すると、意図しない状態の不一致が発生し、OAuth 2認証が失敗する可能性があります。そのため、禁止文字を含む値を設定しようとすると、stateは無視され、警告がログに記録されます。

アクセス関数:

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

通知シグナル:

void stateChanged(const QString &state)

[since 6.9] tokenUrl : QUrl

このプロパティには、トークンの取得に使用されるトークンエンドポイントのURLが格納されます。ユースケースや認証サーバーの対応状況に応じて、これらのトークンはアクセストークン、リフレッシュトークン、IDトークンのいずれかになります。

トークンは通常、認証段階が完了した後に取得され、トークンエンドポイントは必要に応じてトークンを更新するためにも使用できます。

たとえば、QOAuth2AuthorizationCodeFlow はこの URL を使用してアクセストークンのリクエストを発行し、QOAuth2DeviceAuthorizationFlow はこの URL を使用してアクセストークンのポーリングを行います。

この列挙型は Qt 6.9 で導入されました。

アクセス関数:

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

Notifier シグナル:

void tokenUrlChanged(const QUrl &tokenUrl)

userAgent : QString

このプロパティには、ネットワークリクエストの作成に使用されるUser-Agentヘッダーが格納されます。

デフォルト値は「QtOAuth/1.0 (+https://www.qt.io)」です。

アクセス関数:

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

Notifierシグナル:

void userAgentChanged(const QString &userAgent)

メンバ関数のドキュメント

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

parent を親として、QAbstractOAuth2オブジェクトを生成します。

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

parent を親としてQAbstractOAuth2オブジェクトを生成し、manager をネットワークアクセスマネージャーとして設定します。

[virtual noexcept] QAbstractOAuth2::~QAbstractOAuth2()

QAbstractOAuth2 インスタンスを破棄します。

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

このシグナルは、アクセストークンの有効期限が切れようとしているときに発信されます。

このシグナルを発火させるには、アクセストークンに有効な有効期限が設定されている必要があります。このシグナルを手動で処理する別の方法として、autoRefresh を使用する方法があります。

この関数は Qt 6.9 で導入されました。

refreshLeadTime 、autoRefresh 、およびrefreshTokens()も参照してください 。

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

返信サーバーがサーバーから認証コールバックを受信した際に発行されるシグナル:data には、サーバーから受信した値が含まれています。

void QAbstractOAuth2::clearNetworkRequestModifier()

ネットワークリクエスト修飾子をクリアします。

setNetworkRequestModifier()も参照してください 。

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

返されるURLは、url を基に、指定されたparameters およびアクセストークンを組み合わせて生成されます。

注:この関数は 、メタオブジェクトシステムやQMLから呼び出すことができます。詳細はQ_INVOKABLE を参照してください。

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

この関数は、バージョン 6.13 で非推奨となる予定です。

代わりに `serverReportedErrorOccurred ` を使用してください

RFC 6749のエラー応答で定義されているように、認証サーバーが認証リクエストやトークンリクエスト(トークンの更新リクエストを含む)の処理中にエラーを報告した際に発生するシグナルです。

error はエラーの名前です。errorDescription はエラーの説明であり、uri はエラーに関する詳細情報を含むオプションの URI です。

QAbstractOAuth::requestFailed() およびQAbstractOAuth2::serverReportedErrorOccurred()も参照してください 。

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

QAbstractOAuth::prepareRequest (QNetworkRequest *request, const QByteArray &verb, const QByteArray &body)を再実装します。

QString QAbstractOAuth2::refreshToken() const

現在のリフレッシュトークンを取得します。

リフレッシュトークンは通常、アクセストークンよりも有効期間が長いため、後で使用するために保存しておくのが賢明です。

現在のリフレッシュトークンを返します。利用可能なリフレッシュトークンがない場合は、空の文字列を返します。

注: プロパティ `refreshToken`のゲッター 関数です。

関連項目: setRefreshToken()。

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

トークンを更新するには、この関数を呼び出します。この関数は、refreshTokensImplementation() を呼び出して、実際の更新を行います。

この関数は Qt 6.9 で導入されました。

refreshTokensImplementation() およびautoRefreshも参照してください 。

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

このスロットは、refreshTokens() によって呼び出され、トークンの更新リクエストを送信します。

派生クラスは、トークンの更新をサポートするために、このスロットを再実装する必要があります:

classMyClass :publicQAbstractOAuth2
{
    ...
protectedQ_SLOTS:
    voidrefreshTokensImplementation() QT7_ONLY(override);
};

voidMyClass::refreshTokensImplementation()
{
    qDebug("refresh");
}

この関数は Qt 6.9 で導入されました。

autoRefresh およびaccessTokenAboutToExpire()も参照してください 。

QString QAbstractOAuth2::responseType() const

使用されたresponse_typeを返します。

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

RFC 6749のエラー応答で定義されているように、認証サーバーが認証リクエスト、トークンリクエスト(トークンの更新リクエストを含む)の処理中にエラーを報告した際に発信されるシグナル。

error はエラーの名前です。errorDescription はエラーの説明であり、uri はエラーに関する詳細情報を含むオプションの URI です。

これらの RFC で定義されたエラーを含め、すべてのエラーを単一のシグナルで捕捉するには、QAbstractOAuth::requestFailed() を使用します。

この関数は Qt 6.9 で導入されました。

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

ネットワークリクエストの変更関数を `callback` に設定します。この関数は、サーバーへ送信されるネットワークリクエストをカスタマイズするために使用されます。

callback void(QNetworkRequest&, QAbstractOAuth::Stage) のシグネチャを実装する必要があります。渡される ` ` は直接変更可能であり、コールバックの完了直後に使用されます。` ` は、関数ポインタ、ラムダ式、メンバ関数、または任意の呼び出し可能なオブジェクトにすることができます。渡される ` ` を使用すると、リクエストがどの段階に関連しているか(トークンリクエスト、トークン更新リクエスト、または ` ` の場合の認証リクエスト)を確認できます。QNetworkRequest callback QAbstractOAuth::Stage QOAuth2DeviceAuthorizationFlow

context は呼び出しの存続期間を制御し、context が破棄された場合に、割り当て解除されたリソースへのアクセスを防ぎます。 つまり、コンテキストとして提供されたオブジェクトが破棄された場合、コールバックは実行されません。context は有効なQObject を指している必要があります(また、コールバックがメンバ関数である場合は、実際にその関数が存在している必要があります)。コールバックの結果は直ちに使用されるため、context はQAbstractOAuth2 インスタンスと同じスレッドに存在する必要があります。

この関数は Qt 6.9 で導入されました。

clearNetworkRequestModifier() およびQNetworkRequestも参照してください 。

void QAbstractOAuth2::setRefreshToken(const QString &refreshToken)

使用する新しいリフレッシュトークン `refreshToken ` を設定します。

このメソッドを使用してカスタムリフレッシュトークンを設定し、その後 `refreshTokens()` を通じてアクセストークンを更新することができます。

注: プロパティrefreshToken のセッター 関数です。

refreshToken()も参照してください 。

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

クライアントと認証サーバー間で相互TLS接続を確立する際に使用するTLSconfiguration を設定します。

この関数は Qt 6.5 で導入されました。

sslConfiguration() およびsslConfigurationChanged()も参照してください 。

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

クライアントと認証サーバー間で相互TLS接続を確立する際に使用されるTLS設定を返します。

この関数は Qt 6.5 で導入されました。

setSslConfiguration() およびsslConfigurationChanged()も参照してください 。

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

このシグナルは、TLS設定が変更されたときに発火します。configuration パラメータには、新しいTLS設定が含まれます。

この関数は Qt 6.5 で導入されました。

sslConfiguration() および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.