Skip to content

SAIF.Framework.Security.EnvironmentApi dependencies

This library declares no in-solution <ProjectReference> entries; all of its non-BCL dependencies are consumed as NuGet package references, and it also integrates with a centralized WCF service and an HTTP-based Environment API.

Internal dependencies

None declared. No <ProjectReference> entries exist in SAIF.BOF.Framework.Security.EnvironmentApi.csproj — internal-repository libraries are instead consumed as versioned NuGet packages, listed under External dependencies below*.

Dependency Type Usage
None — —

External dependencies

Dependency Version Usage
Newtonsoft.Json 13.0.3 JsonConvert.DeserializeObject for developer-settings override file parsing (Services.Common\EnvironmentServiceBase.cs)
SAIF.Framework.Common (external, unindexed) 2.0.22074.3 SAIF.Common.Extensions (IsNullOrEmpty, ToStringAll, ApplicationName(), Enforce.ArgumentNotNullOrEmpty, Identity.UserId()) used throughout EnvironmentServiceBase.cs, IEnvironmentService.cs, WcfEnvironmentService.cs, SystemHashUtil.cs; classified as framework-inherited
SAIF.HashUtil (external, unindexed) 2.0.22083.2 SAIF.HashUtil.SaltShaker and SystemHashExpiredException used in SystemHashUtil.cs; classified as framework-inherited
WCF SecurityService endpoint N/A (service, not a package) http://saifonline/WCF/Security (binding BasicHttpBinding_Security), consumed via the generated proxy in Connected Services\SecurityService\Reference.cs and wrapped by SecurityServiceClient.GetUsersByGroup (Core\Services\SecurityServiceClient.cs); provides an alternative, server-side path to AD group-membership data alongside the local ADService path

Dependency risks and notes

  • SAIF.Framework.Common and SAIF.HashUtil are external, unindexed packages — their internal implementation is not analyzed as part of this library's documentation set; only their consumed surface (extension methods, SaltShaker, SystemHashExpiredException) is traceable here**.
  • The WCF SecurityService endpoint (http://saifonline/WCF/Security) exposes IsAuthorized/IsAuthorized2 (user/role authorization) and GetUsersByGroup (AD group enumeration), but only GetUsersByGroup is consumed by this library's SecurityServiceClient wrapper — IsAuthorized/IsAuthorized2 exist only as unused generated-proxy methods with no local caller found.
  • No call site invoking SecurityServiceClient was found elsewhere within this library — it is a thin wrapper provided for use by downstream consumers rather than used internally, meaning drift between this library's local ADService authorization path and the WCF-based path is not internally enforced or reconciled.
  • SecurityServiceClient hard-codes default LDAP/domain constants (LDAP = "LDAP://slmdc01.corp.saif.com:389/DC=corp,DC=saif,DC=com", DOMAIN = "saif") rather than reading them from EnvironmentConfigKeys.SecurityServiceUrl; the actual service URL is supplied externally by the caller's constructor argument, not read internally from that config key.
  • The local AD-authorization path (ADService, used by MachineSecurityService) resolves its LDAP host/domain values (ad.ldap.host, ad.ldap.internal.root, ad.internal.domain) at runtime via the Environment API rather than from a static config file; actual production values are not verifiable from static analysis alone*.
  • MachineSecurityService.IsAuthorized fails closed (returns false) on any AD-lookup exception, logging only via Debug.WriteLine — failures in the AD dependency are not surfaced through structured audit/security logging.
  • This library also depends on an HTTP-based Environment API service (base URL resolved from the OS environment variable EnvironmentApiUrl) for all configuration-settings retrieval; this is a runtime service dependency rather than a package dependency, and its absence throws MissingEnvironmentUrlVariableException.
  • Whether any downstream (non-EnvironmentApi) library calls IsAuthorized/IsAuthorized2 on the generated SecurityService.SecurityClient proxy, or instantiates SecurityServiceClient/MachineSecurityService directly, is out of scope for this library-level analysis and was not verified**.

Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.

Sources

  • SAIF.Framework.Security.EnvironmentApi\SAIF.BOF.Framework.Security.EnvironmentApi.csproj
  • SAIF.Framework.Security.EnvironmentApi\Services.Common\EnvironmentServiceBase.cs
  • SAIF.Framework.Security.EnvironmentApi\Services.Common\SystemHashUtil.cs
  • SAIF.Framework.Security.EnvironmentApi\Services.Common\EnvironmentConfigKeys.cs
  • SAIF.Framework.Security.EnvironmentApi\Core\Services\SecurityServiceClient.cs
  • SAIF.Framework.Security.EnvironmentApi\Core\Services\MachineSecurityService.cs
  • SAIF.Framework.Security.EnvironmentApi\Core\Services\ADService.cs
  • SAIF.Framework.Security.EnvironmentApi\Connected Services\SecurityService\Reference.cs
  • SAIF.Framework.Security.EnvironmentApi\Connected Services\SecurityService\SecurityService.wsdl
  • SAIF.Framework.Security.EnvironmentApi\app.config
  • SAIF.Framework.Security.EnvironmentApi\Exceptions\MissingEnvironmentUrlVariableException.cs