@umbraco-cms/backoffice
    Preparing search index...

    Class UmbAuthContext

    This base provides the necessary for a class to become a context-api controller.

    Hierarchy (View Summary)

    Index
    isAuthorized: Observable<boolean> = ...

    Observable that emits true if the user is authorized, otherwise false.

    It will only emit when the authorization state changes.

    keepUserLoggedIn: boolean

    Whether the server is configured to keep users logged in by auto-refreshing before session expiry. Provided by the backend via the keep-user-logged-in attribute on <umb-app>.

    session$: Observable<UmbAuthSession | undefined> = ...
    timeoutSignal: Observable<void> = ...

    Observable that acts as a signal and emits when the user has timed out, i.e. the token has expired. This can be used to show a timeout message to the user.

    It will emit once per second, so it can be used to trigger UI updates or other actions when the user has timed out.

    • get authorizationSignal(): Observable<void>

      Observable that acts as a signal for when the authorization state changes.

      Returns Observable<void>

      An observable that emits when the authorization state changes.

      Observe isAuthorized instead. Scheduled for removal in Umbraco 19.

      It will emit once per second, so it can be used to trigger UI updates or other actions when the authorization state changes.

    • get isInitialized(): Observable<void>
      Internal

      Observable that emits once, without a value, when the auth context is initialized. For consumers: the boot sequence already awaits app entry points before the router evaluates its guards, so by the time any extension code runs this has long since completed.

      Returns Observable<void>

      An observable that emits once when the auth context is initialized.

      Internal boot signal, never intended for public use. Scheduled for removal in Umbraco 19.

      It will only emit once and then complete itself.

    • The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target.

      MDN Reference

      Parameters

      • type: string
      • callback: EventListenerOrEventListenerObject | null
      • Optionaloptions: boolean | AddEventListenerOptions

      Returns void

    • Completes the login flow. This is called on the oauth_complete page to exchange the authorization code for tokens.

      Returns Promise<UmbTokenEndpointResponse | null>

      The token response timing, or null if no authorization was pending.

    • Configures a @hey-api/openapi-ts generated client for authenticated API calls.

      Sets baseUrl, credentials, and the auth callback (cookie-based with automatic token refresh via getLatestToken), and binds the default response interceptors (401 retry, problem-details error notifications, etc.) to the client.

      The same auth context owns a single UmbApiInterceptorController for the lifetime of the host (<umb-app>), so it's safe to call this method for multiple clients (the core's umbHttpClient and an extension's own generated client) without registering duplicate auth-signaler contexts.

      Parameters

      • client: UmbApiClient

        A @hey-api/openapi-ts client instance — either umbHttpClient or one regenerated by an extension package against its own OpenAPI document.

      Returns void

      const authContext = await this.getContext(UMB_AUTH_CONTEXT);
      authContext.configureClient(myClient);
      // Now myClient automatically includes auth headers and interceptors
    • The dispatchEvent() method of the EventTarget sends an Event to the object, (synchronously) invoking the affected event listeners in the appropriate order.

      MDN Reference

      Parameters

      • event: Event

      Returns boolean

    • Checks if the user is authorized. If Authorization is bypassed, the user is always authorized.

      Returns boolean

      True if the user is authorized, otherwise false.

    • Gets the latest token from the Management API. With cookie auth, this returns '[redacted]' — the real token is in the httpOnly cookie. If the session has expired, it will attempt a refresh first.

      Returns Promise<string>

      The latest token from the Management API

        const token = await authContext.getLatestToken();
      const result = await fetch('https://my-api.com', { headers: { Authorization: `Bearer ${token}` } });

      UmbAuthContext

    • Get the default OpenAPI configuration, which is set up to communicate with the Management API.

      Returns UmbOpenApiConfiguration

      The default OpenAPI configuration

      This is useful if you want to communicate with your own resources generated by the @hey-api/openapi-ts library.

      UmbAuthContext

      const defaultOpenApi = authContext.getOpenApiConfiguration();
      client.setConfig({
      base: defaultOpenApi.base,
      auth: defaultOpenApi.token,
      });
    • Gets the post logout redirect url.

      Returns string

      The post logout redirect url, which is the backoffice path with the logout path appended.

    • Get the server url to the Management API.

      Returns string

      The server url to the Management API

      UmbAuthContext

      	const serverUrl = authContext.getServerUrl();
      OpenAPI.BASE = serverUrl;
      	const config = authContext.getOpenApiConfiguration();
      const result = await fetch(`${config.base}/umbraco/management/api/v1/my-resource`, {
      credentials: config.credentials,
      headers: { Authorization: `Bearer ${await config.token()}` },
      });

      Consume UMB_SERVER_CONTEXT and use its getServerUrl() — the canonical source for the server URL. Scheduled for removal in Umbraco 19.

    • Links the current user to the specified provider by redirecting to the link endpoint.

      Parameters

      • provider: string

        The provider to link to.

      Returns Promise<void>

    • Initiates the login flow.

      Parameters

      • identityProvider: string = 'Umbraco'

        The provider to use for login. Default is 'Umbraco'.

      • Optionalredirect: boolean

        If true, the user will be redirected to the login page.

      • OptionalusernameHint: string

        The username hint to use for login.

      • Optionalmanifest: ManifestAuthProvider

        The manifest for the registered provider.

      Returns Promise<void>

    • Attempts to refresh the token using Web Locks to prevent concurrent refresh requests.

      Returns Promise<boolean>

      True if the refresh was successful, otherwise false.

    • The removeEventListener() method of the EventTarget interface removes an event listener previously registered with EventTarget.addEventListener() from the target.

      MDN Reference

      Parameters

      • type: string
      • callback: EventListenerOrEventListenerObject | null
      • Optionaloptions: boolean | EventListenerOptions

      Returns void

    • Internal

      Sets the auth context as initialized, which means that the auth context is ready to be used. No code outside Umbraco core should ever call this — doing so opens the provider-discovery gate early.

      Returns void

      Internal boot hook, never intended for public use. Scheduled for removal in Umbraco 19.

      The constructor already does this, so calling it again is a no-op on an already-completed subject. It emits once, without a value.

    • Sets the initial state of the auth flow. First asks existing tabs for their session via BroadcastChannel. If no peer responds, falls back to a server refresh.

      Returns Promise<void>

    • Handles the case where the user has timed out, i.e. the token has expired. This will clear the token storage and set the user as unauthorized.

      Returns void

      UmbAuthContext

    • Unlinks the current user from the specified provider.

      Parameters

      • loginProvider: string

        The login provider to unlink from.

      • providerKey: string

        The provider's key for the current user.

      Returns Promise<boolean>

      True if the unlink succeeded.

    • Forces a token refresh against the server (calls /token) and returns true if successful. Use this when you need to unconditionally refresh — e.g. session timeout keep-alive. For per-request token handling, prefer configureClient which skips the network call when the access token is still valid. Uses Web Locks to deduplicate concurrent refresh requests across tabs.

      Returns Promise<boolean>

      True if the refresh succeeded, otherwise false

      UmbAuthContext