Skip to content

SAIF.Business.View.Policy configuration settings

SAIF.Business.View.Policy reads three configuration settings, all through the SAIF Environment API service and all in one method. Together they describe a second, non-Oracle data store — referred to in the source as BDS — that backs policy-group authorization. Every other database call in the library uses the Oracle data portal supplied by the caller, so the library itself configures no Oracle connection.

This is architecturally significant. The BDS connection is assembled directly from the three settings rather than resolved through the framework's DbConnectionManager, so it does not appear in framework-level connection inventories, and it is used from an authorization path (BR-006 and BR-018). A misconfiguration therefore fails as a security-relevant runtime error rather than as a clear configuration error.*

Configuration retrieval methods

Method Class / Interface Namespace Usage pattern
GetConfigSetting IEnvironmentService, reached through AppGlobal.EnvironmentService SAIF.Framework.Security Three consecutive calls in clsPolicySecurity.Initialize; the values are passed positionally into a clsSQLDataLayer constructor and the resulting data portal is cached on the instance.
GetSecureConfigSetting IEnvironmentService SAIF.Framework.Security Not used.
ConfigurationManager.AppSettings — System.Configuration Not used.
DbConnectionManager — SAIF framework Not used. The SQL Server connection is assembled inside clsSQLDataLayer; Oracle connections arrive with the caller-supplied data portal.
ApplicationSettingsBase MySettings SAIF.Business.View.Policy.Tests.My Test project only; the designer scaffolding is empty and no library code reads it.

No dependency-injection registration exists in this library. AppGlobal.EnvironmentService is a static ambient accessor initialised by the hosting application.*

Environment API settings

Settings retrieved through IEnvironmentService, the centralized environment configuration service.

Setting key Method Data type Purpose Consuming class Source
BDS_USER GetConfigSetting String Database login used for the BDS SQL Server connection.* clsPolicySecurity Business/SAIF.Business.View.Policy/clsPolicySecurity.vb
bdsDatabase GetConfigSetting String SQL Server host or instance name for the BDS store.* clsPolicySecurity Business/SAIF.Business.View.Policy/clsPolicySecurity.vb
BDS_DATABASENAME GetConfigSetting String SQL Server catalog name for the BDS store.* clsPolicySecurity Business/SAIF.Business.View.Policy/clsPolicySecurity.vb

The roles above are read from the parameter positions of the clsSQLDataLayer(user, server, databaseName, userName) constructor. The setting names themselves do not make the mapping obvious, and bdsDatabase in particular carries the server name rather than the database name.*

All three values vary by environment, since each names an environment-specific account, host, or catalog.

AppSettings (Web.config)

Neither app.config nor Web.config declares an appSettings section, and there are no ConfigurationManager.AppSettings call sites in this library.

Database connection configuration

Connection name Provider Retrieval method Purpose Source
BDS SQL Server connection SQL Server, through clsSQLDataLayer GetConfigSetting for BDS_USER, bdsDatabase, and BDS_DATABASENAME Backs the group-membership procedure cp_policy_in_group and the agent, loss-control, and group policy-list queries (Authorize a policy for the current user, Build the permitted policy list). Business/SAIF.Business.View.Policy/clsPolicySecurity.vb
Oracle policy portal Oracle, ODP.NET managed driver Supplied by the caller as an IDataPortalInfo Backs every statement in the SQL catalog and every stored procedure call. Hosting application**

The tables reached through the BDS connection are not named in this library's source, so they cannot be cataloged on the Database tables page.**

Secure settings

No secure settings are read. BDS_USER is retrieved in plain text and no password setting is read anywhere in the library, which implies either trusted authentication or credential resolution inside clsSQLDataLayer.*

Custom configuration sections

Section name Handler type Purpose
oracle.manageddataaccess.client OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess 4.122.21.1 Declares the ODP.NET managed driver section in both app.config and Web.config. The declaration pins the assembly version but supplies no section body.*

Both configuration files also register Oracle.ManagedDataAccess.Client as a provider factory. app.config additionally carries assembly binding redirects for Newtonsoft.Json, RestSharp, System.Web.Http, System.Net.Http.Formatting, System.Text.Json, and System.Runtime.CompilerServices.Unsafe.

Transitive configuration (from dependencies)

Setting key Method Source dependency Dependency type Purpose
Unresolved GetConfigSetting SAIF.BOF.Framework NuGet Supplies AppGlobal, IEnvironmentService, clsSQLDataLayer, and the data-portal infrastructure. The host must initialise the Environment API and the Oracle portal; the specific keys are not visible from this repository.**
Unresolved — SAIF.BOF.Business and the other SAIF BOF business packages NuGet Configuration requirements are not documented in this repository.**

Configuration dependencies

Dependency Type Required at Impact if missing
AppGlobal.EnvironmentService Ambient service First authorization call clsPolicySecurity.Initialize cannot read any setting, so no authorization decision that needs the BDS store can be made.*
BDS_USER, bdsDatabase, BDS_DATABASENAME Environment API settings First authorization call The values are passed straight into the data layer with no validation or fallback. A missing or wrong value produces an unusable connection and a runtime failure at the first query rather than a clear configuration error.*
Caller-supplied IDataPortalInfo Data portal Every retrieval Without it no Oracle read in this library can execute.
ODP.NET managed driver 4.122.21.1 Assembly and config section Runtime The pinned provider must be deployed for Oracle access to resolve.*

Configuration risks

  • The three settings are required but unvalidated, so misconfiguration surfaces late and as a database error.*
  • Key naming is inconsistent: BDS_USER and BDS_DATABASENAME are upper snake case while bdsDatabase is camel case. A case-sensitive environment store makes this an easy mistake.*
  • The BDS connection bypasses DbConnectionManager, so it will not appear in framework-level connection inventories or be managed alongside other connections.*
  • Because the BDS store answers an authorization question, a misconfiguration has a security-relevant failure mode: group membership cannot be evaluated and access is refused (BR-006).*
  • What the BDS store is, which system owns it, and how the BDS_USER login authenticates are not determinable from this repository.**

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

  • Business/SAIF.Business.View.Policy/clsPolicySecurity.vb
  • Business/SAIF.Business.View.Policy/app.config
  • Business/SAIF.Business.View.Policy/Web.config
  • Business/SAIF.Business.View.Policy/packages.config
  • Business/SAIF.Business.View.Policy/SAIF.BOF.Business.View.Policy.vbproj