GetUserPrinter (OP-17)¶
Request and response¶
| Part | Type | Description |
|---|---|---|
inUserId |
String |
The SamAccountName to look up. No domain parameter is offered to the caller. |
| Part | Type | Description |
|---|---|---|
<return> |
ADServiceResponse |
Response (EResponse code) and Message (the extensionAttribute2 attribute value on success). |
WebMethod attributes¶
<WebMethod()> — bare, no arguments supplied.
Steps¶
- No access check is performed (BR-06).
- Initialize
myStruc.Response = Success,myStruc.Message = String.Empty. - In a
Tryblock, call H2GetUserPrincipalwithinExternalDomainhard-wired toFalse— the internal domain only — per the authored comment'Assume internal domain(BR-31). - If the principal is
Nothing, setResponse = UserDoesNotExist. Because the domain is hard-wired, an external-domain user'sSamAccountNamenever resolves here, so external-domain users are always reported asUserDoesNotExist; the caller cannot select a domain. - Otherwise, get the underlying
DirectoryEntryand assignMessage = de.Properties.Item("extensionAttribute2").Value, a late-bound COM property read (BR-27, BR-31). Catch: setResponse = Failure,Message = ex.Message.Finally: releaseuserPrinandde.- Return the
ADServiceResponsesentinel.
Process flow¶
flowchart TD
A["Call GetUserPrinter"] --> B["GetUserPrincipal<br>inExternalDomain hard-wired False"]
B -->|"Nothing"| C["Response = UserDoesNotExist<br>includes all external-domain users"]
B -->|"Found"| D["Read extensionAttribute2<br>via GetUnderlyingObject"]
D -->|"Success"| E["Message = printer value<br>Response = Success"]
D -->|"Exception"| F["Response = Failure<br>Message = ex.Message"]
C --> G["Return ADServiceResponse"]
E --> G
F --> G
Shared state effects¶
None — this operation touches no process-wide state; all locals are per-request.
Error handling¶
This operation never faults: every failure path, including an unresolved user or an unset extensionAttribute2 attribute, is caught and mapped to Response = Failure with ex.Message in Message. See Faults for the service-wide fault model.
Authorization¶
None in code. This is one of the eleven ungated operations that disclose directory data to any caller who can reach the endpoint (see Authentication and authorization and Tech debt).
Related documentation¶
- Service index
- Overview
- Architecture
- Activation and hosting
- Operations
- Operations and processes
- Business rules
- Authentication and authorization
- Configuration
- Dependencies
- Faults
- Operational runbook
- Tech debt
Sources¶
src\ADUserServices\clsADUserServices.asmx.vb(lines 687-713)