Skip to content

Configuration ​

All Shuttle.Access-specific settings live under Shuttle:Access in appsettings.json. JWT issuer and OAuth provider configuration have their own page — see JSON Web Tokens — and the Consistency page covers Shuttle:Recall:EventProcessing:ImmediateConsistency in detail. This page covers everything else.

Connection strings (ConnectionStrings:Access, ConnectionStrings:azure) and Shuttle:Hopper (queue transports and message routes — see the Docker and Docker Compose guides for example values) follow standard Shuttle.Hopper configuration.

Shuttle:Access — shared ​

Bound by AccessOptions, used by both Shuttle.Access.WebApi and Shuttle.Access.Server.

PropertyDefaultDescription
SystemTenantIdc3ee3908-716b-48df-abda-33b49e09be97Id of the built-in system tenant
SystemTenantNameSystemName of the built-in system tenant
SystemAdministratorIdentityNameshuttle-adminIdentity name seeded on first run
SystemAdministratorPasswordshuttle-adminPassword seeded on first run — change this
SessionDuration08:00:00How long a session is valid for once registered
SessionRenewalTolerance00:15:00Window before expiry within which a session is renewed rather than re-issued

Shuttle:Access:Api — Shuttle.Access.WebApi ​

Bound by ApiOptions.

PropertyDefaultDescription
AllowPasswordAuthenticationtrueWhether POST /v1/sessions accepts an identity name/password body
OAuthRegisterUnknownIdentitiestrueWhether a successful OAuth sign-in registers a new identity when none exists
ExtensionFolder./.extensionFolder Shuttle.Access.WebApi looks in for OAuth provider SVG icons ({ExtensionFolder}/OAuth/{provider}.svg)

Shuttle:Access:Authorization ​

This one section is bound by two different option classes, depending on which package reads it:

  • Shuttle.Access.AspNetCore's AccessAuthorizationOptions — used by every application, including the web API itself, to secure its own endpoints (see Securing an endpoint).
  • Shuttle.Access.WebApi's AccessAuthenticationOptions — used only by the web API, because it is the sole deployment that validates issuers and tokens (see Sessions).

The properties each binds are disjoint, so a single section safely serves both:

PropertyBound byDefaultDescription
BaseAddressevery app except Shuttle.Access.WebApi(empty)Address of the Shuttle.Access.WebApi deployment that resolves the caller's session
Realmevery appAPIRealm reported on a 401 challenge
InsecureModeEnabledShuttle.Access.WebApi onlyfalseBypasses signature validation — never enable in production
IssuersShuttle.Access.WebApi only[]Accepted JWT issuers — see JSON Web Tokens

Shuttle:Access:Server — Shuttle.Access.Server ​

Bound by ServerOptions.

PropertyDefaultDescription
MonitorKeepAliveInterval00:00:15Interval at which the server's keep-alive heartbeat runs
Timeout00:02:00Keep-alive timeout before the server is considered unresponsive

Shuttle:Access:SqlServer ​

Bound by AccessSqlServerOptions.

PropertyDefaultDescription
ConnectionString(empty)Overrides ConnectionStrings:Access when set
CommandTimeout00:00:30SQL command timeout

Shuttle:Access:Client — Shuttle.Access.RestClient ​

Bound by AccessClientOptions. Used by any application that calls Shuttle.Access.WebApi as itself — see Calling Shuttle.Access as yourself.

PropertyDefaultDescription
BaseAddress(empty)Address of the Shuttle.Access.WebApi deployment to call
RenewToleranceTimeSpan00:05:00Window before session expiry within which the client renews it

Shuttle:Access:Client:PasswordAuthenticationInterceptor ​

Bound by PasswordAuthenticationInterceptorOptions, when using UsePasswordAuthenticationProvider(...).

PropertyDefaultDescription
IdentityName(empty)Identity used to authenticate this application as itself
Password(empty)Password for IdentityName
TenantId(none)Tenant to authenticate against, if not the system tenant

Putting it together ​

A minimal Shuttle.Access.WebApi configuration, combining several of the sections above with the consistency toggle and connection strings:

json
{
  "ConnectionStrings": {
    "Access": "server=database;database=Access;user id=sa;password=Pass!000;TrustServerCertificate=true",
    "azure": "UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://azurite"
  },
  "Shuttle": {
    "Access": {
      "Api": {
        "AllowPasswordAuthentication": true,
        "OAuthRegisterUnknownIdentities": true
      }
    },
    "Recall": {
      "EventProcessing": {
        "ImmediateConsistency": {
          "Enabled": true
        }
      }
    }
  }
}

See the Docker and Docker Compose guides for full, runnable server-appsettings.json/webapi-appsettings.json examples.