Skip to content

Authentication and authorization

No operation on this host carries an authorization attribute or a programmatic identity check. Both Windows and anonymous authentication are enabled at the IIS layer, and the only gate on any request is a job-name allow/deny list, which is a job filter, not a caller filter.

Authentication mechanism

Authentication is configured at the IIS layer by the release pipeline, not in code:

Deployment setting Value Source
IISWindowsAuth true pipelines/build-vars.UC4.yml
IISAnonymousAuth true pipelines/build-vars.UC4.yml
IISAppPoolPipelineMode Integrated pipelines/build-vars.UC4.yml
Applied by Stages/v2/deploy-stages-api-iis.yml@templates with IISWindowsAuth / IISAnonymousAuth parameters pipelines/release.UC4.yml
system.webServer/security/authentication in Web.config Not declared src/WCF/SAIF.Services.WCF.UC4.Host/Web.config

Both Windows and anonymous authentication are enabled on the deployed application, and the same values are used for every stage the release template drives (the template defines the stage list outside this repository).

Authorization enforcement points

Detection performed across src/WCF/SAIF.Services.WCF.UC4.Host/*.cs and Web.config, each returning no match: [PrincipalPermission, ServiceAuthorizationManager, ServiceSecurityContext, OperationContext.Current.ServiceSecurityContext, [SaifAuthorize, IsAuthorized, <serviceAuthorization>, <serviceCredentials>. There is no caller identity check, no role check, and no principal inspection anywhere in this host.

Access requirements per operation

Operation Check found Enforcement point
ExecuteJob None in code —
ExecuteJobWithClientId None in code —
ExecuteJobWithJson None in code —
ExecuteJobWithJsonAndClientId None in code —
ExecuteJobWithValues None in code —
ExecuteJobWithValuesAndClientId None in code —
ExecuteJobWithParameters None in code —
ExecuteJobWithParametersAndClientId None in code —

Roles and resources

No role or resource model exists in this host. The nearest thing to an access-control resource is the uc4.rules environment-service document, which gates which jobs may run per environment — see BR-UC4-001, BR-UC4-002, and BR-UC4-003. It never inspects who is calling.

With anonymous authentication enabled and no authorization check in code, the effective access control for every operation is network reachability plus the uc4.rules allow/deny list — a job filter, never a caller filter.

Secrets handling

Aspect Finding
Secrets referenced in code None found — no GetSecureConfigSetting call exists in this host's source
Certificates Uc4Client.cs imports System.Security.Cryptography.X509Certificates (line 7) but uses no certificate type anywhere — an unused import, not a security mechanism
Credentials transcribed in this documentation None — no secret value is ever reproduced; only setting names and kinds are named

Security rules and provider/consumer relationship

The centralized SAIF WCF security service — SecurityService, AuthorizationCacheService, ADService, the provider side of the IsAuthorized / IsAuthorized2 calls documented from the consumer side elsewhere in this repository — lives in the sibling host SAIF.Services.WCF.Host (route Security). This host neither provides nor consumes it. No SecurityService, IsAuthorized, or securityServiceUrl reference exists anywhere in src/WCF/SAIF.Services.WCF.UC4.Host. A reader who has seen the consumer-side documentation for other hosts must not expect that mechanism here: this host is outside the SAIF role model entirely.

The absence of authorization here is recorded as security finding F-SEC-001 (arbitrary job invocation across a network boundary with no caller authorization) — see Tech debt for the full security finding catalog.

Sources

  • src/WCF/SAIF.Services.WCF.UC4.Host/UC4Service.cs
  • src/WCF/SAIF.Services.WCF.UC4.Host/Uc4Client.cs
  • src/WCF/SAIF.Services.WCF.UC4.Host/Web.config
  • pipelines/build-vars.UC4.yml
  • pipelines/release.UC4.yml