Table of Contents
Last updated: 6/17/2026

Developer Login installation


The Developer Login extension is an authentication component intended for development and testing only.

It provides:

  • A single shared password for all users.
  • User impersonation via a selectable list of ShareAspace users.
  • A simplified mailbox that captures all outgoing emails.
Important

The Developer Login component must not be used in production environments.

For the mailbox functionality to work, an email extension (such as SMTP or SendGrid) must also be registered on the ShareAspace collection.

The Developer Login component must be registered as a Nova Extension on a bootstrapped ShareAspace collection.

Prerequisites


The Developer Login extension requires:

Installation steps


Step 1: Run the installer

Run the DeveloperLogin.msi installer to install the ShareAspace Developer Login extension on the IIS server.

Step 2: Configure IIS

During installation, an IIS Application Pool named "DeveloperLogin" is created.

By default, the Application Pool runs under the built-in LocalSystem account.

Note

If a different account is used, it must have read access to the Developer Login installation folder.

Step 3: Configure the component

See the Configuration section.

Step 4: Register the extension

See the Extension registration section.

Configuration


Open the appsettings.json file located in the Developer Login installation folder.

By default: C:\Program Files\Eurostep\ShareAspace\DeveloperLogin\appsettings.json

Example configuration:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug"
    }
  },
  "AllowedHosts": "*",
  "NovaConfig": {
    "SymmetricKey": "<generated-key>",
    "EnableApiEndpoints": true,
    "BaseAddress": "https://developerlogin.example.com/DeveloperLogin",
    "ServerAddress": "https://host.example.com:5001",
    "UsersConfig": {
      "Admin": "<generated-protected-password>"
    }
  }
}

Configuration properties

  • SymmetricKey – Symmetric key used to secure communication with ShareAspace.
  • BaseAddress – Public address where the Developer Login service is hosted.
  • ServerAddress – ShareAspace Host or Reverse Proxy endpoint.
  • UsersConfig.Admin – Secret representing the shared login password.

SymmetricKey

Generate the SymmetricKey as described in: Generate symmetric signing keys

UsersConfig.Admin

To generate a password secret:

Run the Developer Login service in console mode with the --secret option:

.\Eurostep.SAS.DeveloperLoginHost.exe --secret "pAssw0rd"

The tool will output a protected string:

CfDJ8G208q18...C7n5HYfwqItzzAfU15r9

This value should be used as UsersConfig.Admin.

The unprotected value internally represents:

{ "Secret": "**SHA512HASH**" }

ASP.NET Data Protection keys are stored at:

C:\ProgramData\Eurostep\DeveloperLogin\

OpenTelemetry configuration


The Developer Login component supports OpenTelemetry (OTEL) for logging, metrics, and tracing.

Configuration is performed using configuration variables, for example:

{
  "OTEL_SERVICE_NAME": "ShareAspace.DeveloperLogin",
  "OTEL_EXPORTER_OTLP_ENDPOINT": "https://host.example.com:4317",
  "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc"
}

Additional OTEL configuration options are available and are shared across all ShareAspace components.

See: OpenTelemetry logging.

Extension registration


The Developer Login component must be registered as a Nova Extension on a bootstrapped ShareAspace collection.

Note

The Developer Login service must be running during registration, as a manifest exchange will occur.

Example registration script:

Download Add-Extension.ps1

param (
    [Parameter(Mandatory = $true)]
    [string]$NovaHost,
    [Parameter(Mandatory = $true)]
    [string]$PersonalAccessToken,
    [Parameter(Mandatory = $true)]
    [string]$Extension,
    [Parameter(Mandatory = $true)]
    [string]$ExtensionApiKey
)

$uri = "{0}/collection/externalExtension/novaExtension" -f $NovaHost
$pat = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$PersonalAccessToken"))
$headers = @{ "Authorization" = "Basic $pat" }
$body = @{ "hostUri" = $Extension; "apiKey" = $ExtensionApiKey; "tokenLifeTime" = 15 } | ConvertTo-Json

Invoke-WebRequest -Method Post -Uri $uri -Headers $headers -Body $body -ContentType "application/json" -UseBasicParsing

Example usage:

.\Add-Extension.ps1 `
  -NovaHost https://host.example.com:5001 `
  -PersonalAccessToken "<token>" `
  -Extension "https://developerlogin.example.com/DeveloperLogin" `
  -ExtensionApiKey "<apikey>"