SAIF.Business.Security.SystemUser security and authorization¶
This library implements security behavior by classifying external Active Directory users through direct group-membership checks and by managing user and group state in AD. It does not expose MVC endpoints or SAIFAuthorize attributes; callers consume its classification and credential outcomes to drive higher-level authorization decisions.
Authorization architecture¶
clsSystemUser combines clsSecurityPrincipal role checks, SAIF.DirectoryServices user and group operations, and encrypted payment-password comparisons. The primary enforcement path is programmatic: initialization resolves the current principal into a UserTypes value, while account-management methods mutate group membership or validate credential-scoped data.
flowchart TD
Caller[Calling application] --> SystemUser[clsSystemUser]
SystemUser --> SecPrinc[clsSecurityPrincipal]
SystemUser --> DirSvc[clsDirectoryServer / clsUser / clsGroup]
SystemUser --> Encrypt[clsSecureEncrypt]
SecPrinc --> AD[(EXTERNAL Active Directory)]
DirSvc --> AD
Encrypt --> Compare[Encrypted payment-password comparison]
AD resource catalog¶
| Resource name | Purpose | Enforcement point | Source |
|---|---|---|---|
agents |
Classifies an EXTERNAL-domain user as UserTypes.Agent. |
clsSystemUser.GetUserType() |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
Producers |
Classifies an EXTERNAL-domain user as UserTypes.Agent. |
clsSystemUser.GetUserType() |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
ARPAgents |
Classifies an EXTERNAL-domain user as UserTypes.Agent. |
clsSystemUser.GetUserType() |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
Bookkeepers |
Classifies an EXTERNAL-domain user as UserTypes.Bookkeeper. |
clsSystemUser.GetUserType() |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
FeeAuditors |
Classifies an EXTERNAL-domain user as UserTypes.Auditor. |
clsSystemUser.GetUserType() |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
Groups |
Classifies an EXTERNAL-domain user as UserTypes.Group. |
clsSystemUser.GetUserType() |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
Loss Control |
Classifies an EXTERNAL-domain user as UserTypes.LossControl. |
clsSystemUser.GetUserType() |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
MCO |
Classifies an EXTERNAL-domain user as UserTypes.MCO. |
clsSystemUser.GetUserType() |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
Medical Providers |
Classifies an EXTERNAL-domain user as UserTypes.MedProv. |
clsSystemUser.GetUserType() |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
policyholders |
Classifies an EXTERNAL-domain user as UserTypes.PolicyHolder. |
clsSystemUser.GetUserType() |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
Workers |
Classifies an EXTERNAL-domain user as UserTypes.Worker. |
clsSystemUser.GetUserType() |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
Caller-supplied group name |
Targets an AD security group for grant or revoke operations. | AddUserToRole(...) / RemoveUserFromRole(...) |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
Authorization enforcement points¶
No attribute-based authorization was detected in this library.
Programmatic authorization checks¶
| Class | Method | Resource / Role | Check type | Source |
|---|---|---|---|---|
clsSystemUser |
GetUserType() |
EXTERNAL-domain classification groups | IsInRole |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
clsSystemUser |
AddUserToRole(...) |
Caller-supplied AD group | AddToGroup |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
clsSystemUser |
RemoveUserFromRole(...) |
Caller-supplied AD group | RemoveFromGroup |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
clsSystemUser |
UserExists(inUserId As String) |
Named AD user | Existence lookup | Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
Data-level authorization¶
| Entity type | Validation method | Mechanism | Source |
|---|---|---|---|
| Payment password | clsSystemUser.CheckPaymentPWD() |
Encrypt the candidate value and compare it to the encrypted AD MiddleName value for the loaded user. |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
| Payment password | clsSystemUser.IsUniquePaymentPWD() |
Reject values that match either the stored payment password or the user's login password. | Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
| Active user context | clsSystemUser.LoadThisUser() |
Re-point the library's internal directory-user reference to a specific user before later mutating methods execute. | Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
| Special-user credentials | clsSystemUser.GetSpecialUserInfo() |
Read restricted credentials from OnlineProperties.xml for the payrollReportsOnly special-user type. |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
Segregation of duties¶
No segregation-of-duties rules were identified in the analysis findings for this library.
Security interfaces and contracts¶
| Interface / Class | Role | Consumers | Source |
|---|---|---|---|
clsSecurityPrincipal |
Authentication and role-classification context. | clsSystemUser, clsSystemUserTest |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb; Business\SAIF.Business.Security.SystemUser\clsSystemUserTest.vb |
clsDirectoryServer |
Directory connection and lookup gateway. | clsSystemUser |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
clsUser / clsUserCollection / clsGroup |
AD user, collection, and group contracts used for CRUD, search, and role-management flows. | clsSystemUser |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
clsSecureEncrypt |
Encryption contract for payment-password comparison. | clsSystemUser |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
clsProperties |
XML configuration contract for elevated credentials, feature flags, and special-user values. | clsSystemUser |
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vb |
See Configuration settings for the PROPERTIES.XML and OnlineProperties.xml nodes that supply elevated AD bind credentials, agreement-check settings, and special-user values to these security flows.
Notes¶
- AD names listed here are raw Active Directory group names used with
IsInRole(...); they are notIsAuthorizedresource names. - The library operates against the EXTERNAL domain for portal-user classification and account management.
Related documentation¶
- Index
- Overview
- Architecture
- Dependencies
- Configuration settings
- Operations and processes
- Business rules
- API reference
Sources¶
Business\SAIF.Business.Security.SystemUser\clsSystemUser.vbBusiness\SAIF.Business.Security.SystemUser\clsSystemUserTest.vb