Add DirectoryService SID lookup functionality with configurable option #18
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR implements DirectoryService lookup functionality for unknown SID strings, addressing issue #90 by extending the parser to translate SIDs that aren't in the predefined list of well-known SIDs.
Problem
Currently, the parser only translates well-known SID aliases (e.g.,
DA -> Domain Admins,SY -> Local System) and predefined SID strings. When encountering unknown SIDs, it reports an error and displays them asUnknown(SID-string). This limitation prevents the parser from resolving custom domain SIDs, user accounts, or other valid but non-standard SIDs.Solution
Added a configurable DirectoryService lookup mechanism that attempts to resolve unknown SIDs using Windows security APIs while maintaining full backward compatibility.
Key Features
SidResolverOptionsclass withEnableDirectoryServiceLookupboolean (default:false)SecurityIdentifier.Translate()for Windows directory lookupsUnknown(SID)behavior when resolution failsISidResolverinterface allows dependency injection for testing and alternative implementationsUsage Examples
Implementation Details
New classes:
ISidResolver: Interface for SID resolution abstractionDirectoryServiceSidResolver: Windows DirectoryService implementationSidResolverOptions: Configuration with boolean switch and custom resolver supportUpdated constructors: Added overloads to
Sid,Sddl,Acl, andAceclasses acceptingSidResolverOptionsDependencies: Added
System.Security.Principal.Windowspackage for .NET Standard 2.0 compatibilityError handling: Gracefully handles invalid SID formats, network failures, and missing accounts
Testing
The functionality is disabled by default, ensuring zero impact on existing applications while providing the requested SID translation capability when explicitly enabled.
Fixes #9
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.