@@ -39,16 +39,13 @@ public ActiveDirectoryClient(IAzureContext context)
39
39
{
40
40
GraphClient = AzureSession . Instance . ClientFactory . CreateArmClient < GraphRbacManagementClient > (
41
41
context , AzureEnvironment . Endpoint . Graph ) ;
42
-
43
42
GraphClient . TenantID = context . Tenant . Id . ToString ( ) ;
44
43
}
45
44
46
45
public PSADObject GetADObject ( ADObjectFilterOptions options )
47
46
{
48
47
PSADObject result = null ;
49
-
50
48
Debug . Assert ( options != null ) ;
51
-
52
49
if ( IsSet ( options . Mail , options . UPN , options . Id ) )
53
50
{
54
51
result = FilterUsers ( options ) . FirstOrDefault ( ) ;
@@ -115,7 +112,6 @@ public IEnumerable<PSADServicePrincipal> FilterServicePrincipals(ADObjectFilterO
115
112
{
116
113
List < PSADServicePrincipal > servicePrincipals = new List < PSADServicePrincipal > ( ) ;
117
114
ServicePrincipal servicePrincipal = null ;
118
-
119
115
if ( ! string . IsNullOrEmpty ( options . Id ) )
120
116
{
121
117
try
@@ -246,7 +242,6 @@ public List<PSADObject> ListUserGroups(string principal)
246
242
var groupsIds = GraphClient . Users . GetMemberGroups ( objectId . ToString ( ) , new UserGetMemberGroupsParameters ( ) ) ;
247
243
var groupsResult = GraphClient . Objects . GetObjectsByObjectIds ( new GetObjectsParameters { ObjectIds = groupsIds . ToList ( ) } ) ;
248
244
result . AddRange ( groupsResult . Select ( g => g . ToPSADGroup ( ) ) ) ;
249
-
250
245
return result ;
251
246
}
252
247
@@ -305,25 +300,29 @@ public IEnumerable<PSADGroup> FilterGroups(ADObjectFilterOptions options, ulong
305
300
}
306
301
}
307
302
catch { /* The group does not exist, ignore the exception */ }
303
+
304
+ return new List < PSADGroup > ( ) ;
305
+ }
306
+ else if ( options . Mail != null )
307
+ {
308
+ Rest . Azure . OData . ODataQuery < ADGroup > odataQuery = new Rest . Azure . OData . ODataQuery < ADGroup > ( g => g . Mail == options . Mail ) ;
309
+ return new GenericPageEnumerable < ADGroup > (
310
+ delegate ( )
311
+ {
312
+ return GraphClient . Groups . List ( odataQuery ) ;
313
+ } , GraphClient . Groups . ListNext , first , skip ) . Select ( g => g . ToPSADGroup ( ) ) ;
308
314
}
309
315
else
310
316
{
311
317
Rest . Azure . OData . ODataQuery < ADGroup > odataQuery = null ;
312
- if ( options . Mail != null )
318
+ if ( ! string . IsNullOrEmpty ( options . SearchString ) && options . SearchString . EndsWith ( "*" ) )
313
319
{
314
- odataQuery = new Rest . Azure . OData . ODataQuery < ADGroup > ( g => g . Mail == options . Mail ) ;
320
+ options . SearchString = options . SearchString . TrimEnd ( '*' ) ;
321
+ odataQuery = new Rest . Azure . OData . ODataQuery < ADGroup > ( g => g . DisplayName . StartsWith ( options . SearchString ) ) ;
315
322
}
316
323
else
317
324
{
318
- if ( ! string . IsNullOrEmpty ( options . SearchString ) && options . SearchString . EndsWith ( "*" ) )
319
- {
320
- options . SearchString = options . SearchString . TrimEnd ( '*' ) ;
321
- odataQuery = new Rest . Azure . OData . ODataQuery < ADGroup > ( g => g . DisplayName . StartsWith ( options . SearchString ) ) ;
322
- }
323
- else
324
- {
325
- odataQuery = new Rest . Azure . OData . ODataQuery < ADGroup > ( g => g . DisplayName == options . SearchString ) ;
326
- }
325
+ odataQuery = new Rest . Azure . OData . ODataQuery < ADGroup > ( g => g . DisplayName == options . SearchString ) ;
327
326
}
328
327
329
328
return new GenericPageEnumerable < ADGroup > (
@@ -332,8 +331,6 @@ public IEnumerable<PSADGroup> FilterGroups(ADObjectFilterOptions options, ulong
332
331
return GraphClient . Groups . List ( odataQuery ) ;
333
332
} , GraphClient . Groups . ListNext , first , skip ) . Select ( g => g . ToPSADGroup ( ) ) ;
334
333
}
335
-
336
- return new List < PSADGroup > ( ) ;
337
334
}
338
335
339
336
public IEnumerable < PSADGroup > FilterGroups ( )
@@ -485,51 +482,38 @@ private void PatchAppPasswordCredentials(string appObjectId, List<PasswordCreden
485
482
public PSADCredential CreateAppKeyCredential ( string appObjectId , KeyCredential credential )
486
483
{
487
484
ValidateKeyCredential ( credential ) ;
488
-
489
485
var keyCredsList = GetAppKeyCredentials ( appObjectId ) ;
490
-
491
486
// Add new KeyCredential to existing KeyCredential list
492
487
keyCredsList . Add ( credential ) ;
493
-
494
488
PatchAppKeyCredentials ( appObjectId , keyCredsList ) ;
495
-
496
489
return credential . ToPSADCredential ( ) ;
497
490
}
498
491
499
492
public PSADCredential CreateAppPasswordCredential ( string appObjectId , PasswordCredential credential )
500
493
{
501
494
ValidatePasswordCredential ( credential ) ;
502
-
503
495
var passwordCredsList = GetAppPasswordCredentials ( appObjectId ) ;
504
-
505
496
// Add new PasswordCredential to existing KeyCredential list
506
497
passwordCredsList . Add ( credential ) ;
507
-
508
498
PatchAppPasswordCredentials ( appObjectId , passwordCredsList ) ;
509
-
510
499
return credential . ToPSADCredential ( ) ;
511
500
}
512
501
513
502
public List < PSADCredential > GetAppCredentials ( string appObjectId )
514
503
{
515
504
List < PSADCredential > CredentialList = new List < PSADCredential > ( ) ;
516
-
517
505
var keyCredsList = GetAppKeyCredentials ( appObjectId ) ;
518
506
CredentialList . AddRange ( keyCredsList . Select ( kc => kc . ToPSADCredential ( ) ) ) ;
519
-
520
507
var passwordCredsList = GetAppPasswordCredentials ( appObjectId ) ;
521
508
CredentialList . AddRange ( passwordCredsList . Select ( pc => pc . ToPSADCredential ( ) ) ) ;
522
-
523
509
return CredentialList ;
524
510
}
525
511
526
512
527
513
public void RemoveAppCredentialByKeyId ( string appObjectId , Guid keyId )
528
514
{
529
515
var keyCredsList = GetAppKeyCredentials ( appObjectId ) ;
530
-
531
516
var toBeDeletedKeyCred = keyCredsList . Find ( kc => Guid . Parse ( kc . KeyId ) == keyId ) ;
532
-
533
517
if ( toBeDeletedKeyCred != null )
534
518
{
535
519
keyCredsList . Remove ( toBeDeletedKeyCred ) ;
@@ -539,7 +523,6 @@ public void RemoveAppCredentialByKeyId(string appObjectId, Guid keyId)
539
523
{
540
524
var passwordCredsList = GetAppPasswordCredentials ( appObjectId ) ;
541
525
var toBeDeletedPasswwordCred = passwordCredsList . Find ( pc => Guid . Parse ( pc . KeyId ) == keyId ) ;
542
-
543
526
if ( toBeDeletedPasswwordCred != null )
544
527
{
545
528
passwordCredsList . Remove ( toBeDeletedPasswwordCred ) ;
@@ -634,50 +617,37 @@ private void PatchSpPasswordCredentials(string spObjectId, List<PasswordCredenti
634
617
public PSADCredential CreateSpKeyCredential ( string spObjectId , KeyCredential credential )
635
618
{
636
619
ValidateKeyCredential ( credential ) ;
637
-
638
620
var keyCredsList = GetSpKeyCredentials ( spObjectId ) ;
639
-
640
621
// Add new KeyCredential to existing KeyCredential list
641
622
keyCredsList . Add ( credential ) ;
642
-
643
623
PatchSpKeyCredentials ( spObjectId , keyCredsList ) ;
644
-
645
624
return credential . ToPSADCredential ( ) ;
646
625
}
647
626
648
627
public PSADCredential CreateSpPasswordCredential ( string spObjectId , PasswordCredential credential )
649
628
{
650
629
ValidatePasswordCredential ( credential ) ;
651
-
652
630
var passwordCredsList = GetSpPasswordCredentials ( spObjectId ) ;
653
-
654
631
// Add new PasswordCredential to existing KeyCredential list
655
632
passwordCredsList . Add ( credential ) ;
656
-
657
633
PatchSpPasswordCredentials ( spObjectId , passwordCredsList ) ;
658
-
659
634
return credential . ToPSADCredential ( ) ;
660
635
}
661
636
662
637
public List < PSADCredential > GetSpCredentials ( string spObjectId )
663
638
{
664
639
List < PSADCredential > CredentialList = new List < PSADCredential > ( ) ;
665
-
666
640
var keyCredsList = GetSpKeyCredentials ( spObjectId ) ;
667
641
CredentialList . AddRange ( keyCredsList . Select ( kc => kc . ToPSADCredential ( ) ) ) ;
668
-
669
642
var passwordCredsList = GetSpPasswordCredentials ( spObjectId ) ;
670
643
CredentialList . AddRange ( passwordCredsList . Select ( pc => pc . ToPSADCredential ( ) ) ) ;
671
-
672
644
return CredentialList ;
673
645
}
674
646
675
647
public void RemoveSpCredentialByKeyId ( string spObjectId , Guid keyId )
676
648
{
677
649
var keyCredsList = GetSpKeyCredentials ( spObjectId ) ;
678
-
679
650
var toBeDeletedKeyCred = keyCredsList . Find ( kc => Guid . Parse ( kc . KeyId ) == keyId ) ;
680
-
681
651
if ( toBeDeletedKeyCred != null )
682
652
{
683
653
keyCredsList . Remove ( toBeDeletedKeyCred ) ;
@@ -687,7 +657,6 @@ public void RemoveSpCredentialByKeyId(string spObjectId, Guid keyId)
687
657
{
688
658
var passwordCredsList = GetSpPasswordCredentials ( spObjectId ) ;
689
659
var toBeDeletedPasswwordCred = passwordCredsList . Find ( pc => Guid . Parse ( pc . KeyId ) == keyId ) ;
690
-
691
660
if ( toBeDeletedPasswwordCred != null )
692
661
{
693
662
passwordCredsList . Remove ( toBeDeletedPasswwordCred ) ;
0 commit comments