Skip to content

OAuthUserConfiguration Class

  • OAuthUserConfiguration
  • class Esri::ArcGISRuntime::Authentication::OAuthUserConfiguration

    The OAuth user configuration information used by an OAuthUserCredential. More...

    Header: #include <Authentication/OAuthUserConfiguration.h>
    Since: Esri::ArcGISRuntime 200.8
    Inherits: Esri::ArcGISRuntime::Object and Esri::ArcGISRuntime::JsonSerializable

    Public Functions

    OAuthUserConfiguration(const QUrl &portalUrl, const QString &clientId, const QString &redirectUri, QObject *parent = nullptr)
    OAuthUserConfiguration(const QUrl &portalUrl, const QString &clientId, const QString &redirectUri, const QString &culture, const Esri::ArcGISRuntime::Authentication::OAuthRefreshTokenExpirationInterval &refreshTokenExpirationInterval, std::optional<int> refreshTokenExchangeInterval, int federatedTokenExpirationInterval, bool showCancelButton, Esri::ArcGISRuntime::Authentication::UserInterfaceStyle userInterfaceStyle, QObject *parent = nullptr)
    virtual ~OAuthUserConfiguration() override
    bool canBeUsedForUrl(const QUrl &url) const
    QString clientId() const
    QString culture() const
    int federatedTokenExpirationInterval() const
    bool isShowCancelButton() const
    QUrl portalUrl() const
    QString redirectUri() const
    std::optional<int> refreshTokenExchangeInterval() const
    Esri::ArcGISRuntime::Authentication::OAuthRefreshTokenExpirationInterval refreshTokenExpirationInterval() const
    Esri::ArcGISRuntime::Authentication::UserInterfaceStyle userInterfaceStyle() const
    bool operator!=(Esri::ArcGISRuntime::Authentication::OAuthUserConfiguration *other) const
    bool operator==(Esri::ArcGISRuntime::Authentication::OAuthUserConfiguration *other) const

    Reimplemented Public Functions

    virtual QString toJson() const override

    Static Public Members

    Esri::ArcGISRuntime::Authentication::OAuthUserConfiguration *fromJson(const QString &json, QObject *parent)

    Detailed Description

    The portal URL, client ID, and redirect URL are required to create an OAuthUserCredential. You can get the client ID and redirect URL by following the Create OAuth credentials for user authentication tutorial.

    To configure the lifetime of the OAuthUserCredential set the refresh token expiration and exchange intervals.

    You can configure the look and feel of the OAuth login page, displayed by an OAuth user credential, by setting isShowCancelButton or userInterfaceStyle, for example.

    There are two OAuth experiences for authenticating with ArcGIS services: 1) an external out-of-process browser, and 2) an in-app embedded browser. These are described in detail below

    External out-of-process browser

    The "external out-of-process browser workflow" refers to an experience where once an authentication challenge is issued, the system's default browser will open up an OAuth login page, outside of the application. Once successfully authenticated, you will be prompted to return back to your application, and the token will be passed back to the application.

    This is the recommended pattern, as it is the most secure. However, it is only supported on iOS and Android.

    This pattern makes use of Qt's Network Authorization module. Ensure you have installed this optional module if you would like to use this pattern.

    App setup

    Apps that support an out-of-process browser experience will need to specify a redirect URI in a format similar to the following: "qt-maps-sdk-app:/oauth2/callback". This must match the redirect URI specified when registering your OAuth application in your portal.

    Android apps must include the following in their app's manifest to declare an Intent.

    <intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW"/>
      <category android:name="android.intent.category.DEFAULT"/>
      <category android:name="android.intent.category.BROWSABLE"/>
      <data android:scheme="qt-maps-sdk-app"/>
    </intent-filter>

    iOS apps must include the following permission in their app's plist.

    <key>CFBundleURLTypes</key>
    <array>
      <dict>
        <key>CFBundleURLSchemes</key>
        <array>
          <string>qt-maps-sdk-app</string>
        </array>
      </dict>
    </array>

    In-app embedded browser

    The "in-app embedded browser" workflow refers to an experience where a browser web view is embedded in the application. Once an authentication challenge is issued, the embedded browser will display the OAuth login page directly inside of the app.

    This workflow is recommended for desktop applications, where the external out-of-process workflow is not supported.

    This pattern requires Qt's web engine. Ensure you have installed this optional module if you would like to use this pattern.

    App setup

    Apps that support an in-app embedded browser experience must specify the redirect URI as "urn:ietf:wg:oauth:2.0:oob". This must match the redirect URI specified when registering your OAuth application in your portal.

    Member Function Documentation

    OAuthUserConfiguration::OAuthUserConfiguration(const QUrl &portalUrl, const QString &clientId, const QString &redirectUri, QObject *parent = nullptr)

    Creates an OAuth configuration with the specified parameters.

    • portalUrl - The URL of the portal to authenticate with.
    • clientId - A unique identifier associated with an application registered with the portal that assists with client/server OAuth authentication.
    • redirectUri - The URI that the OAuth login page redirects to when authentication completes.
    • parent - The optional parent QObject.

    Note: The following defaults are used:

    • culture - the current system locale/culture.
    • refreshTokenExpirationInterval - The requested expiration interval (in minutes) for the refresh token. The max interval can be overridden by the portal administrator. The value `-1` returns the maximum refresh token expiration interval supported by the portal, which is usually set to ninety days. The portal administrator has the ability to decrease this maximum value. The value `0` returns the default refresh token expiration interval configured on the portal, typically two weeks. This default value may be affected if the portal administrator sets the maximum refresh token value (ninety days) to less than two weeks.
    • refreshTokenExchangeInterval - The requested exchange interval (in minutes) for the OAuth refresh token. Use this to exchange a refresh token before it expires. This will limit the number of times a user will have to login because of expiring tokens. - std::nullopt.
    • federatedTokenExpirationInterval - The requested expiration interval (in minutes) for federated tokens generated using the OAuth credential.
    • showCancelButton - A Boolean value indicating whether to show "Cancel" button on the OAuth login page.
    • userInterfaceStyle - Constants indicating the interface style for the OAuth login page.
    • preferPrivateWebBrowserSession - A Boolean value indicating whether the OAuth login session should ask the browser for a private authentication session.

    OAuthUserConfiguration::OAuthUserConfiguration(const QUrl &portalUrl, const QString &clientId, const QString &redirectUri, const QString &culture, const Esri::ArcGISRuntime::Authentication::OAuthRefreshTokenExpirationInterval &refreshTokenExpirationInterval, std::optional<int> refreshTokenExchangeInterval, int federatedTokenExpirationInterval, bool showCancelButton, Esri::ArcGISRuntime::Authentication::UserInterfaceStyle userInterfaceStyle, QObject *parent = nullptr)

    Creates an OAuth configuration with the specified parameters.

    • portalUrl - The URL of the portal to authenticate with.
    • clientId - A unique identifier associated with an application registered with the portal that assists with client/server OAuth authentication.
    • redirectUri - The URI that the OAuth login page redirects to when authentication completes.
    • culture - The OAuth login page is displayed in the language specified by the given culture code.
    • refreshTokenExpirationInterval - The requested expiration interval (in minutes) for the refresh token. The max interval can be overridden by the portal administrator. The value `-1` returns the maximum refresh token expiration interval supported by the portal, which is usually set to ninety days. The portal administrator has the ability to decrease this maximum value. The value `0` returns the default refresh token expiration interval configured on the portal, typically two weeks. This default value may be affected if the portal administrator sets the maximum refresh token value (ninety days) to less than two weeks.
    • refreshTokenExchangeInterval - The requested exchange interval (in minutes) for the OAuth refresh token. Use this to exchange a refresh token before it expires. This will limit the number of times a user will have to login because of expiring tokens.
    • federatedTokenExpirationInterval - The requested expiration interval (in minutes) for federated tokens generated using the OAuth credential.
    • showCancelButton - A Boolean value indicating whether to show "Cancel" button on the OAuth login page.
    • userInterfaceStyle - Constants indicating the interface style for the OAuth login page.
    • parent - The optional parent QObject.

    [override virtual noexcept] OAuthUserConfiguration::~OAuthUserConfiguration()

    Destructor.

    bool OAuthUserConfiguration::canBeUsedForUrl(const QUrl &url) const

    Returns if this configuration can be used for the given URL.

    • url - The URL to check.

    QString OAuthUserConfiguration::clientId() const

    Returns a unique identifier associated with an application registered with the portal that assists with client/server OAuth authentication.

    QString OAuthUserConfiguration::culture() const

    Returns the OAuth login page is displayed in the language specified by the given culture code.

    If not explicitly set, the culture used by the device/machine is used. If the culture is not supported by the portal then OAuth login page will be displayed in the language corresponding to culture specified in the portal/organization settings. The format for culture code is based on a language code and a country code separated by a dash. Example: "en-US".

    int OAuthUserConfiguration::federatedTokenExpirationInterval() const

    Returns the requested expiration interval (in minutes) for federated tokens generated using the OAuth credential.

    [static] Esri::ArcGISRuntime::Authentication::OAuthUserConfiguration *OAuthUserConfiguration::fromJson(const QString &json, QObject *parent)

    Convert a JSON string to an object.

    • json - The JSON string.
    • parent - The optional parent QObject.

    bool OAuthUserConfiguration::isShowCancelButton() const

    Returns a boolean value indicating whether to show the "Cancel" button on the OAuth login page.

    QUrl OAuthUserConfiguration::portalUrl() const

    Returns the URL of the portal to authenticate with.

    QString OAuthUserConfiguration::redirectUri() const

    Returns the URI that the OAuth login page will redirect to when authentication completes.

    std::optional<int> OAuthUserConfiguration::refreshTokenExchangeInterval() const

    Returns the requested exchange interval (in minutes) for the OAuth refresh token. Use this to exchange a refresh token before it expires. This will limit the number of times a user will have to login because of expiring tokens.

    If the exchange interval is set to std::nullopt, then the refresh token will never be exchanged and will eventually expire, causing the user to have to log in again. Note that 0 or any negative number will be treated as std::nullopt.

    To have any affect, this should be set to a value less than the refreshTokenExpirationInterval. Setting it to a value greater than the refreshTokenExpirationInterval will have the same effect as setting this to std::nullopt.

    It is recommended to keep this interval as low as possible because long lived refresh tokens may increase the security risk.

    See also refreshTokenExpirationInterval.

    Esri::ArcGISRuntime::Authentication::OAuthRefreshTokenExpirationInterval OAuthUserConfiguration::refreshTokenExpirationInterval() const

    Returns the requested expiration interval (in minutes) for the refresh token.

    The maximum interval can be overridden by the portal administrator.

    The value `-1` returns the maximum refresh token expiration interval supported by the portal, which is usually set to ninety days. The portal administrator has the ability to decrease this maximum value. - The value `0` returns the default refresh token expiration interval configured on the portal, typically two weeks. This default value may be affected if the portal administrator sets the maximum refresh token value (ninety days) to less than two weeks.

    See also refreshTokenExchangeInterval and RefreshTokenExpirationInterval.

    [override virtual] QString OAuthUserConfiguration::toJson() const

    Reimplements: JsonSerializable::toJson() const.

    Returns convert an object to JSON string.

    Esri::ArcGISRuntime::Authentication::UserInterfaceStyle OAuthUserConfiguration::userInterfaceStyle() const

    Returns constants indicating the interface style for the OAuth login page.

    The default is UserInterfaceStyle::Unspecified.

    bool OAuthUserConfiguration::operator!=(Esri::ArcGISRuntime::Authentication::OAuthUserConfiguration *other) const

    Tests and returns true if the two OAuthUserConfiguration objects are not equal.

    • other - The configuration to compare to.

    bool OAuthUserConfiguration::operator==(Esri::ArcGISRuntime::Authentication::OAuthUserConfiguration *other) const

    Tests and returns true if the two OAuthUserConfiguration objects are equal.

    • other - The configuration to compare to.

    Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.