@@ -49,11 +49,11 @@ public class AadIssuerValidator
49
49
/// <summary>
50
50
/// A list of all Issuers across the various Azure AD instances
51
51
/// </summary>
52
- private readonly SortedSet < string > _issuerAliases ;
52
+ private readonly ISet < string > _issuerAliases ;
53
53
54
54
internal /* internal for test */ AadIssuerValidator ( IEnumerable < string > aliases )
55
55
{
56
- _issuerAliases = new SortedSet < string > ( aliases ) ;
56
+ _issuerAliases = new HashSet < string > ( aliases , StringComparer . OrdinalIgnoreCase ) ;
57
57
}
58
58
59
59
/// <summary>
@@ -86,8 +86,12 @@ public static AadIssuerValidator GetIssuerValidator(string aadAuthority)
86
86
}
87
87
88
88
// Add issuer aliases of the chosen authority
89
- string authority = authorityHost ?? FallbackAuthority ;
90
- var aliases = issuerMetadata . Metadata . Where ( m => m . Aliases . Any ( a => a == authority ) ) . SelectMany ( m => m . Aliases ) . Distinct ( ) ;
89
+ string authority = authorityHost ?? new Uri ( FallbackAuthority ) . Host ;
90
+ var aliases = issuerMetadata . Metadata
91
+ . Where ( m => m . Aliases . Any ( a => string . Equals ( a , authority , StringComparison . OrdinalIgnoreCase ) ) )
92
+ . SelectMany ( m => m . Aliases )
93
+ . Distinct ( ) ;
94
+
91
95
s_issuerValidators [ authority ] = new AadIssuerValidator ( aliases ) ;
92
96
return s_issuerValidators [ authority ] ;
93
97
}
@@ -143,15 +147,15 @@ private bool IsValidIssuer(string validIssuerTemplate, string tenantId, string a
143
147
144
148
try
145
149
{
146
- var uri = new Uri ( validIssuerTemplate . Replace ( "{tenantid}" , tenantId ) ) ;
150
+ var issuerFromTemplateUri = new Uri ( validIssuerTemplate . Replace ( "{tenantid}" , tenantId ) ) ;
147
151
var actualIssuerUri = new Uri ( actualIssuer ) ;
148
152
149
153
// Template authority is in the aliases
150
- return _issuerAliases . Contains ( uri . Authority ) &&
151
- // "iss" authority matches
152
- string . Equals ( uri . Authority , actualIssuerUri . Authority ) &&
154
+ return _issuerAliases . Contains ( issuerFromTemplateUri . Authority ) &&
155
+ // "iss" authority is in the aliases
156
+ _issuerAliases . Contains ( actualIssuerUri . Authority ) &&
153
157
// Template authority ends in the tenantId
154
- IsValidTidInLocalPath ( tenantId , uri ) &&
158
+ IsValidTidInLocalPath ( tenantId , issuerFromTemplateUri ) &&
155
159
// "iss" ends in the tenantId
156
160
IsValidTidInLocalPath ( tenantId , actualIssuerUri ) ;
157
161
}
0 commit comments