Loading…
Tilbage

Profilbillede

Cache tokens

Joel Klint

Hej,

 

Jeg er en WSC og har et interesse i at cache de tokens jeg trækker.

 

Jeg bruger nuget-pakken Digst.OioIdws.Wsc. Det ser ikke ud til at de SecurityTokens som returneres fra IStsTokenService.GetToken() kan serialiseres. Det begrænser min mulighed for at bygge custom caching med f.eks. Redis eller lignende. I må gerne rette mig, hvis serialisering af de tokens er understøttet officielt.

 

Jeg kan se at jeres nuget-pakke har indbygget funktionalitet for caching ved at brug StsTokenServiceCache.GetToken(). Jeg kan dog ikke finde dokumentation på hvordan den caching virker. Kan I venligst henvise mig til dokumentation for den caching, eller beskrive hvordan det virker? Mine nuværende spørgsmål:

  • Hvor caches mit token? Kan det konfigureres?
  • Er mit token stadig cachet hvis jeg genstarter min applikation?
  • Er det muligt at cache et token, sådan at to applikationer kan brug det samme token (load balanced miljø)

 

Hvis I ellers anbefaler en måde at cache tokens, må I gerne dele den med mig.

Hej Joel,

Det findes ikke et dokument der dækker alle dine spørgsmål, så jeg vil efter bedste evne prøve at svare på dem her.

Så alt koden er offentlig tilgængelig på https://github.com/digst/OIOIDWS.Net, og her vil du kunne se at StsTokenServiceCache benytter en almindelig MemoryCache til caching af de tokens STS udsteder. Tokens udstedt af STS'en er gyldige i 8 timer så de gemmes indtil kort før de udløber (CacheClockShewInSeconds hvor tæt på man vil komme på de 8 timer).

Da der er tale om en MemoryCache lever den kun så længe website ikke genstartes, lige så vel, som at den ikke deles med andre applikationer/servere i et setup med flere applikationer/servere.

Hvis du ønsker at benytte en anden måde at cache udstedte STS tokens på vil jeg opfordre dig til at implementere din egen implementation af IStsTokenService, evt. med udgangspunkt i StsTokenServiceBase. Se evt. hvordan StsTokenServiceCache lavet.

Eksempel på anvendelse findes også i repository'et, se f.eks. https://github.com/digst/OIOIDWS.Net/blob/master/Examples/Digst.OioIdws.WscExample/Program.cs

Med venlig hilsen
Morten D. Bech

ændret af Morten D. Bech (16.06.2021)