You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Det er ingen smart matching mellom innkommed requests og hvilket authentication scheme som velges, så alle kjøres gjennom til én matcher. Det innebærer at hvis en f.eks. gjør en request med et Altinn-token, og konfigurasjonen WebApi:Authentication:JwtBearerTokenSchemas består av (i denne rekkefølgen) Maskinporten, MaskinportenAuxillary, Altinn vil det kastes to exceptions for de to Maskinporten-schemene som feiler, før det treffer Altinn-schemaet hvor tokenet aksepteres.
På min maskin med release-build og Serilog__MinimumLevel__Default satt til Error måles ca 15% økning i RPS på min PC hvis det treffer på første scheme vs treff på siste scheme. Målt med tests\k6\run.ps1 -ApiEnvironment localdev -ApiVersion v1 -TokenGeneratorUsername *** -TokenGeneratorPassword ** -FilePath tests\k6\tests\serviceowner\dialogSearch.js --vus 10 --duration 30s
Antagelsen er at overheaden kommer av at det kastes exceptions, som er forholdsvis dyrt. Dette vil også potensielt skape støy i application insights (som tracker alt av exceptions).
En potensiell optimalisering her er:
Ved startup, eller i en singleton service, konstruerer en map mellom issuers og schemas, noe ala:
Bruke en eventhandler per scheme som sjekker CurrentScheme matcher før den i det hele tatt prøver:
foreach(varschemainjwtTokenSchemas){authenticationBuilder.AddJwtBearer(schema.Name, options =>{options.MetadataAddress=schema.WellKnown;options.TokenValidationParameters= ....
options.Events=newJwtBearerEvents{OnMessageReceived= context =>{if((string)context.HttpContext.Items["CurrentScheme"]!=schema.Name){context.NoResult();// Skip the current authentication schemereturnTask.CompletedTask;}// If the scheme matches, it will continue to validate the token for this scheme.returnTask.CompletedTask;}};});}
Antagelsen er at dette vil være raskere, siden det ikke vil kastes exceptions. Minuset er at ReadJwtToken alltid må gjøres to ganger, selv om det er treff på første scheme (en gang i mellomvaren og en gang i selve handleren).
The text was updated successfully, but these errors were encountered:
Det er ingen smart matching mellom innkommed requests og hvilket authentication scheme som velges, så alle kjøres gjennom til én matcher. Det innebærer at hvis en f.eks. gjør en request med et Altinn-token, og konfigurasjonen
WebApi:Authentication:JwtBearerTokenSchemas
består av (i denne rekkefølgen)Maskinporten
,MaskinportenAuxillary
,Altinn
vil det kastes to exceptions for de to Maskinporten-schemene som feiler, før det trefferAltinn
-schemaet hvor tokenet aksepteres.På min maskin med release-build og
Serilog__MinimumLevel__Default
satt tilError
måles ca 15% økning i RPS på min PC hvis det treffer på første scheme vs treff på siste scheme. Målt medtests\k6\run.ps1 -ApiEnvironment localdev -ApiVersion v1 -TokenGeneratorUsername *** -TokenGeneratorPassword ** -FilePath tests\k6\tests\serviceowner\dialogSearch.js --vus 10 --duration 30s
Antagelsen er at overheaden kommer av at det kastes exceptions, som er forholdsvis dyrt. Dette vil også potensielt skape støy i application insights (som tracker alt av exceptions).
En potensiell optimalisering her er:
CurrentScheme
matcher før den i det hele tatt prøver:Antagelsen er at dette vil være raskere, siden det ikke vil kastes exceptions. Minuset er at
ReadJwtToken
alltid må gjøres to ganger, selv om det er treff på første scheme (en gang i mellomvaren og en gang i selve handleren).The text was updated successfully, but these errors were encountered: