@@ -61,10 +61,11 @@ impl<'a> LazyProviderInfos<'a> {
6161 }
6262 } ;
6363
64- let metadata = self
65- . cache
66- . get ( self . client , & self . provider . issuer , verify)
67- . await ?;
64+ let Some ( issuer) = & self . provider . issuer else {
65+ return Err ( DiscoveryError :: MissingIssuer ) ;
66+ } ;
67+
68+ let metadata = self . cache . get ( self . client , issuer, verify) . await ?;
6869
6970 self . loaded_metadata = Some ( metadata) ;
7071 }
@@ -179,8 +180,13 @@ impl MetadataCache {
179180 UpstreamOAuthProviderDiscoveryMode :: Disabled => continue ,
180181 } ;
181182
182- if let Err ( e) = self . fetch ( client, & provider. issuer , verify) . await {
183- tracing:: error!( issuer = %provider. issuer, error = & e as & dyn std:: error:: Error , "Failed to fetch provider metadata" ) ;
183+ let Some ( issuer) = & provider. issuer else {
184+ tracing:: error!( %provider. id, "Provider doesn't have an issuer set, but discovery is enabled!" ) ;
185+ continue ;
186+ } ;
187+
188+ if let Err ( e) = self . fetch ( client, issuer, verify) . await {
189+ tracing:: error!( %issuer, error = & e as & dyn std:: error:: Error , "Failed to fetch provider metadata" ) ;
184190 }
185191 }
186192
@@ -394,7 +400,7 @@ mod tests {
394400 let clock = MockClock :: default ( ) ;
395401 let provider = UpstreamOAuthProvider {
396402 id : Ulid :: nil ( ) ,
397- issuer : mock_server. uri ( ) ,
403+ issuer : Some ( mock_server. uri ( ) ) ,
398404 human_name : Some ( "Example Ltd." . to_owned ( ) ) ,
399405 brand_name : None ,
400406 discovery_mode : UpstreamOAuthProviderDiscoveryMode :: Insecure ,
0 commit comments