Skip To Content ArcGIS for Developers Sign In Dashboard

AuthenticationManager Class


A singleton instance to manage authentication. More...

Header: #include <AuthenticationManager>
Since: Esri::ArcGISRuntime 100.0
Inherits: Object


  • 1 property inherited from QObject

Public Functions

  • 31 public functions inherited from QObject


void authenticationChallenge(Esri::ArcGISRuntime::AuthenticationChallenge *challenge)
void clientCertificateInfosChanged()
void clientCertificatePasswordRequired(const QUrl &certificate)
void fetchLoginTypeForUrlCompleted(Esri::ArcGISRuntime::LoginType loginType)

Static Public Members

bool addClientCertificate(const QUrl &clientCertificate, const QString &password = QString())
QStringList clientCertificateInfos()
CredentialCache *credentialCache()
void fetchLoginTypeForUrl(const QUrl &url)
AuthenticationManager *instance()
bool isCredentialCacheEnabled()
void setCredentialCacheEnabled(bool enabled)
  • 10 static public members inherited from QObject

Additional Inherited Members

  • 1 public slot inherited from QObject
  • 1 public variable inherited from QObject
  • 9 protected functions inherited from QObject
  • 2 protected variables inherited from QObject

Detailed Description

A singleton instance to manage authentication.

This class allows you to manage authentication/security related tasks.

It emits the authenticationChallenge signal whenever an authentication or security issue is encountered anywhere in the API.

The following challenges can be raised by the AuthenticationManager:

  • AuthenticationChallengeType::UsernamePassword - Challenges needing username and/or password authentication.
  • AuthenticationChallengeType::OAuth - Challenges needing an OAuth authorization code.
  • AuthenticationChallengeType::ClientCertificate - Challenges needing a client certificate to be provided.
  • AuthenticationChallengeType::SslHandshake - Challenges needing a response to certain SslError errors, usually an untrusted host due to a self-signed certificate.

To handle authentication challenges in the UI automatically in QML, import the Esri.ArcGISRuntime.Dialogs module and declare the AuthenticationView component. After registering the AuthenticationManager type with QML, populate the authenticationManager property of the view with the AuthenticationManager::instance() exposed from C++ to QML. You can register the AuthenticationManager as a QML type with the following syntax:

qmlRegisterUncreatableType<AuthenticationManager>("Esri.TestNamespace", 1, 0, "AuthenticationManager", "AuthenticationManager is uncreateable");

To see a full example of using the AuthenticationView with the AuthenticationManager, please see the token authentication sample.

It also contains an instance of a CredentialCache which maintains a cache of credentials, in memory, that have been previously used to satisfy authentication challenges. This allows a credential to be reused where appropriate, and prevents unnecessary or duplicate challenges from being issued while accessing secure resources from the same security realm. Caching happens automatically if isCredentialCacheEnabled() is true.

Note: When the user wants to sign out, the CredentialCache::removeAllCredentials() method must be called explicitly to clear the credential cache.

Property Documentation

clientCertificateInfos : const QStringList

This property holds the list of client certfication information available from the authentication manager to be used for a client certification authentication challenge (read-only).

Use the index of this list to respond to a client certificate authentication challenge with AuthenticationChallenge::continueWithClientCertificate

Access functions:

QStringList clientCertificateInfos()

Notifier signal:

Member Function Documentation



[static] bool AuthenticationManager::addClientCertificate(const QUrl &clientCertificate, const QString &password = QString())

Adds a client certifcate to the authentication manager by providing a path to a clientCertificate file and and optional password for the certificate.

This function returns true if the certificate was successfully added, or returns false if the certificate file could not be opened or if the password was incorrect.

This function is invokable from QML.

[signal] void AuthenticationManager::authenticationChallenge(Esri::ArcGISRuntime::AuthenticationChallenge *challenge)

AuthenticationManager emits this signal when a response from an authentication challenge is required.

Since Esri::ArcGISRuntime 100.1, authentication challenges occur sequentially. The application or user must respond to a challenge request to allow following challenges in the queue to be emitted.

The returned AuthenticationChallenge object has the AuthenticationManager as its parent.

See also Returned QObjects Parenting.

[signal] void AuthenticationManager::clientCertificateInfosChanged()

AuthenticationManager emits this signal when a client certificate is successfully added by calling addClientCertificate.

Note: Notifier signal for property clientCertificateInfos.

[signal] void AuthenticationManager::clientCertificatePasswordRequired(const QUrl &certificate)

AuthenticationManager emits this signal when a password is required to add a client certificate with addClientCertificate.

[static] CredentialCache *AuthenticationManager::credentialCache()

Returns the credential cache being maintained by the authentication manager.

The credential cache contains credentials that have been used previously to satisfy authentication challenges. This allows a credential to be reused where appropriate, and prevents unnecessary or duplicate challenges from being issued while accessing secure resources from the same security realm.

[static] void AuthenticationManager::fetchLoginTypeForUrl(const QUrl &url)

Checks the login type for the given portal url.

Requests the LoginType for a given url, and emits the fetchLoginTypeForUrlCompleted signal when finished. The loginType that is passed through the signal as a parameter will return as Unknown if an error occurred or if the URL is invalid.

This function was introduced in Esri::ArcGISRuntime 100.2.

[signal] void AuthenticationManager::fetchLoginTypeForUrlCompleted(Esri::ArcGISRuntime::LoginType loginType)

AuthenticationManager emits this signal after the fetchLoginTypeForUrl method has completed.

  • loginType The portal login type.

[static] AuthenticationManager *AuthenticationManager::instance()

Returns the singleton instance of the AuthenticationManager.

Use this method to get a reference to this instance so you can connect its signals to slots.

[static] bool AuthenticationManager::isCredentialCacheEnabled()

Returns true if credentials are cached automatically.

By default, automatic caching is enabled.

[static] void AuthenticationManager::setCredentialCacheEnabled(bool enabled)

Sets whether credential caching is automatically enabled.

See also isCredentialCacheEnabled().

Feedback on this topic?