|
- namespace Campaign_Tracker.Server.Authentication;
-
- public sealed class KeycloakOptions
- {
- public const string SectionName = "Keycloak";
-
- public string Authority { get; init; } = "https://kci-app01.ntp.kentcommunications.com/realms/KCI";
- public string? MetadataAddress { get; init; }
- public string? ValidIssuer { get; init; }
- public string PublicAuthority { get; init; } = "https://kci-app01.ntp.kentcommunications.com/realms/KCI";
- public string ClientId { get; init; } = "canopy-web";
- public string? ClientSecret { get; init; }
- public string? Audience { get; init; }
- public string[]? Audiences { get; init; }
- public bool DisableHttpsMetadata { get; init; }
- public string? TestSigningKey { get; init; }
-
- public string TokenAudience => string.IsNullOrWhiteSpace(Audience) ? ClientId : Audience;
-
- // Keycloak's default access token carries aud="account" (the realm's
- // built-in account client). Resource-server audience validation must
- // accept that alongside our own ClientId, otherwise every legitimate
- // token fails validation with SecurityTokenInvalidAudienceException.
- public string[] TokenAudiences =>
- Audiences is { Length: > 0 } configured
- ? configured
- : [TokenAudience, "account"];
-
- public string TokenIssuer =>
- string.IsNullOrWhiteSpace(ValidIssuer) ? PublicAuthority : ValidIssuer;
-
- public string TokenEndpointAuthority =>
- string.IsNullOrWhiteSpace(PublicAuthority) ? Authority : PublicAuthority;
- }
|