@@ -22,6 +22,7 @@ public sealed class ApiCenterMinimalPermissionsPluginConfiguration
2222 public string ServiceName { get ; set ; } = "" ;
2323 public string SubscriptionId { get ; set ; } = "" ;
2424 public string WorkspaceName { get ; set ; } = "default" ;
25+ public string ? SchemeName { get ; set ; }
2526}
2627
2728public sealed class ApiCenterMinimalPermissionsPlugin (
@@ -143,7 +144,8 @@ public override async Task AfterRecordingStopAsync(RecordingArgs e, Cancellation
143144 TokenPermissions = [ .. minimalPermissions . TokenPermissions . Distinct ( ) ] ,
144145 MinimalPermissions = minimalPermissions . MinimalScopes ,
145146 ExcessivePermissions = [ .. minimalPermissions . TokenPermissions . Except ( minimalPermissions . MinimalScopes ) ] ,
146- UsesMinimalPermissions = ! minimalPermissions . TokenPermissions . Except ( minimalPermissions . MinimalScopes ) . Any ( )
147+ UsesMinimalPermissions = ! minimalPermissions . TokenPermissions . Except ( minimalPermissions . MinimalScopes ) . Any ( ) ,
148+ SchemeName = Configuration . SchemeName
147149 } ;
148150 results . Add ( result ) ;
149151
@@ -155,20 +157,45 @@ public override async Task AfterRecordingStopAsync(RecordingArgs e, Cancellation
155157
156158 if ( result . UsesMinimalPermissions )
157159 {
158- Logger . LogInformation (
159- "API {ApiName} is called with minimal permissions: {MinimalPermissions}" ,
160- result . ApiName ,
161- string . Join ( ", " , result . MinimalPermissions )
162- ) ;
160+ if ( string . IsNullOrWhiteSpace ( Configuration . SchemeName ) )
161+ {
162+ Logger . LogInformation (
163+ "API {ApiName} is called with minimal permissions: {MinimalPermissions}" ,
164+ result . ApiName ,
165+ string . Join ( ", " , result . MinimalPermissions )
166+ ) ;
167+ }
168+ else
169+ {
170+ Logger . LogInformation (
171+ "API {ApiName} is called with minimal permissions of '{SchemeName}' scheme: {MinimalPermissions}" ,
172+ result . ApiName ,
173+ Configuration . SchemeName ,
174+ string . Join ( ", " , result . MinimalPermissions )
175+ ) ;
176+ }
163177 }
164178 else
165179 {
166- Logger . LogWarning (
167- "Calling API {ApiName} with excessive permissions: {ExcessivePermissions}. Minimal permissions are: {MinimalPermissions}" ,
168- result . ApiName ,
169- string . Join ( ", " , result . ExcessivePermissions ) ,
170- string . Join ( ", " , result . MinimalPermissions )
171- ) ;
180+ if ( string . IsNullOrWhiteSpace ( Configuration . SchemeName ) )
181+ {
182+ Logger . LogWarning (
183+ "Calling API {ApiName} with excessive permissions: {ExcessivePermissions}. Minimal permissions are: {MinimalPermissions}" ,
184+ result . ApiName ,
185+ string . Join ( ", " , result . ExcessivePermissions ) ,
186+ string . Join ( ", " , result . MinimalPermissions )
187+ ) ;
188+ }
189+ else
190+ {
191+ Logger . LogWarning (
192+ "Calling API {ApiName} with excessive permissions of '{SchemeName}' scheme: {ExcessivePermissions}. Minimal permissions are: {MinimalPermissions}" ,
193+ result . ApiName ,
194+ Configuration . SchemeName ,
195+ string . Join ( ", " , result . ExcessivePermissions ) ,
196+ string . Join ( ", " , result . MinimalPermissions )
197+ ) ;
198+ }
172199 }
173200
174201 if ( unmatchedApiRequests . Any ( ) )
@@ -208,7 +235,7 @@ private ApiPermissionsInfo CheckMinimalPermissions(IEnumerable<RequestLog> reque
208235 {
209236 Logger . LogInformation ( "Checking minimal permissions for API {ApiName}..." , apiDefinition . Definition ! . Servers . First ( ) . Url ) ;
210237
211- return apiDefinition . Definition . CheckMinimalPermissions ( requests , Logger ) ;
238+ return apiDefinition . Definition . CheckMinimalPermissions ( requests , Logger , Configuration . SchemeName ) ;
212239 }
213240
214241 private ( Dictionary < ApiDefinition , List < RequestLog > > RequestsByApiDefinition , IEnumerable < RequestLog > UnmatchedRequests ) GetRequestsByApiDefinition ( IEnumerable < RequestLog > interceptedRequests , Dictionary < string , ApiDefinition > apiDefinitionsByUrl )
0 commit comments