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:
- A server running Microsoft Internet Information Services (IIS).
- Software prerequisites.
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:
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>"