- ResolvedMember record in Core/Models with DisplayName and Login - ISharePointGroupResolver interface with ResolveGroupsAsync contract - SharePointGroupResolver: CSOM group user loading + Graph transitive AAD resolution - Internal static helpers IsAadGroup, ExtractAadGroupId, StripClaims (all green unit tests) - Graceful error handling: exceptions return empty list per group, never throw - OrdinalIgnoreCase result dict; lazy Graph client creation on first AAD group
586 B
586 B