Skal tjenestegrensesnittet bruke '$ref?$id' ?
Thomas Sødring
tsodring at oslomet.no
Thu May 13 07:59:15 CEST 2021
Hei,
Tjenestegrensesnittet forventer at klienter skal bruke '$ref?$id' der
det er snakk om operasjoner på koblinger på tvers av arkivenheter. For
det meste er tjenestegrensesnittet en CRUD beskrivelse og da ser vi på
individuelle instanser av arkivenheter. I noen tilfeller er det behov
for å jobbe med arkivenheter der vi er mer opptatt av lenker. Dette kan
feks være å flytte en mappe fra en arkivdel til en annen arkivdel. Det
er fremmednøkler operasjonen går på framfor attributter. En annen
eksempel er referanseForloeper til arkivdel, heller kryssreferanser.
Disse er opptatt av fremmednøkler i databasen.
Jeg synes beskrivelsen av slike operasjoner er litt dårlig i
tjenestegrensesnittet, men det kom inn på et tidspunkt der man mente
"$ref?$id=https://..." var en bra måte å identifisere arkivenheter på. I
nikita prosjektet har vi ønsket å gå bort fra $ref?$id tilnærmingen
fordi det anses å være en sikkerhetsrisiko å akseptere tilleggs URLer på
som en del av http forespørsel. Jeg fant ut av det da spring-boot kastet
forespørsler der request parameters inneholdt ":" og etter litt
debugging så var det pga "https://". Se [1], [2].
Et viktig prinsipp vi har fulgt i nikita er at kjernen kan og skal lett
identifisere et objekt gitt en systemID. Dette er viktig fra et
innsynsperspektiv men også et sporings- og kontrollperspektiv. Tenk deg
et depot institusjon som bruker nikita som innsynsløsning og har flere
hundre uttrekk. Da hadde det vært fint å kunne spørre arkivkjernen "Hva
er denne UUID d7418b5c-0bb3-4b09-9312-48a7745d2c97 for noe?" og få
tilbake at det er en saksmappe fra Oslo kommune. Et slikt endepunkt i
nikita kan enkelt implementeres med et endepunkt som ser slik ut:
https://nikita.example.com/noark5v5/api/arkivstruktur/d7418b5c-0bb3-4b09-9312-48a7745d2c97
Dette er noe jeg ønsker å sende endringsforslag til
tjenestegrensesnittet på. Jeg har avventet så langt fordi jeg ville ha
en bedre implementasjonsforståelse av hvordan dette treffer helheten i
tjenestegrensesnittet men tror nå at det bør la seg fint gjennomføre.
Før jeg utvikler endringsforslag for de forskjellige arkivenhetene vil
jeg legge ut en beskrivelse her så dere som ønsker kan kommentere.
Dersom noen har meninger om bruken av URLer i HTTP request parameters,
eventuelt at de synes det er en god ide så vil jeg gjerne diskutere det.
- Thomas
[1] https://www.acunetix.com/blog/whitepaper-http-parameter-pollution/
[2]
https://docs.spring.io/spring-security/site/docs/4.2.20.RELEASE/apidocs/org/springframework/security/web/firewall/StrictHttpFirewall.html
More information about the nikita-noark
mailing list