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_USERandBDS_DATABASENAMEare upper snake case whilebdsDatabaseis 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_USERlogin 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.
Related documentation¶
- Index
- Overview
- Architecture
- Dependencies
- Operations and processes
- Business rules
- Security and authorization
- Database tables
- SQL catalog
- Procedures
- API reference
Sources¶
Business/SAIF.Business.View.Policy/clsPolicySecurity.vbBusiness/SAIF.Business.View.Policy/app.configBusiness/SAIF.Business.View.Policy/Web.configBusiness/SAIF.Business.View.Policy/packages.configBusiness/SAIF.Business.View.Policy/SAIF.BOF.Business.View.Policy.vbproj