Fritekstsøk i rettighetsbegrensede ressurser i Vortex
Integrasjon med UiO-søk
Skrevet av: Øyvind Stegard < oyvind stegard at usit uio no >
USIT, Universitetet i Oslo
Sist oppdatert 9. november 2006
Om dokumentet
Det foreligger et umiddelbart ønske om å kunne gjøre fritekstsøk i rettighetsbegrensede dokumenter som ligger i Vortex. Pr. dags dato kan dette behovet sees på som relativt begrenset, og det gjelder klart avgrensede områder innenfor Vortex. Vortex har ikke innebygget funksjonalitet for å gjøre fritekstsøk, og man vil derfor, på kortere sikt, benytte UiOs søketjeneste til dette. Dette dokumentet vil se på noen konkrete alternative løsninger for å integrere et enkelt fritekstsøk i Vortex-dokumenter vha. søketjenesten sin søkemotor. Noen grove estimater for implementasjon av alternativene blir til slutt presentert. De tekniske løsningene som skisseres bør kunne realiseres innenfor en relativt kort tidsramme. Hovedfokus er ikke å løse et generelt behov for fritekstsøk i Vortex, men funksjonaliteten bør likevel kunne gjenbrukes i størst mulig grad. Dokumentet er av teknisk art og i så måte mest interessant for utviklere og andre personer som er direkte involvert i prosjektene.
Indeksering av rettighetsbegrensede Vortex-dokumenter
Søkemotoren må ha lesetilgang til dokumentene som skal indekseres. Dette kan løses ved å benytte en spesiell bruker i Vortex som har tilgang til å lese alle ressurser. Søkemotoren må da logge inn i Vortex som denne brukeren for å kunne crawle området og hente ut dokumenter. Det kan vise seg å bli vanskelig å få søkemotor-roboten til å logge seg inn via innloggingsskjemaet til Feide pga. dynamiske aspekter ved URL'en og redirecting. Vi må derfor vurdere å slå på ren HTTP digest autentisering (eller liknende) for den spesifikke brukeren og områdene det gjelder i Vortex.
For Vortex sin del betyr dette at vi må spesialbehandle requester fra søkemotor-roboten innenfor de beskyttede områdene, slik at den alltid klarer å autentisere seg uten Feide. Foreslåtte løsninger på dette er at match på User-Agent (eller IP) tilhørende søkemotoren aktiverer Digest-autentisering.Alternativer - søk
Alternativ 1 - søke-grensesnitt i Vortex med UiO-søk som web-service
Kort beskrevet går dette alternativet ut på å implementere et eget søkegrensesnitt i Vortex. Dette grensesnittet (egen Vortex-service) vil ligge innenfor et beskyttet område som krever innlogging. Søk utføres mot UiO-søk som en web-service. Resultatlister fra UiO-søk vil bli levert tilbake som XML. Vortex utfører intern vasking av treffliste og presenterer deretter resultatet.
Hva må gjøres ?
- Løse problematikk ifm. autentisering av søkemotor-robot i Vortex, opprette egne Ultraseek-collections for beskyttet materiale
- Designe og implementere søkeside/service i Vortex (spesielt for rettighetsbeskyttet materiale, eller på generell basis)
- Spesifikasjon av XML-format for treffliste fra UiO-søk (kan tenkes vi kan bruke eller basere oss på Ultraseek sitt egne XML-format)
- Definere enkel web-service protokoll (HTTP-parametre, antall treff, paging, osv)
- Implementere kommunikasjon med UiO-søk som web-service
- Oppsett av ny web-service i UiO-søk (nytt HTTP grensesnitt). Kan også se på muligheten for å bruke Ultraseek XPASearch API direkte fra Vortex.
- Generering av treffliste i XML fra UiO-søk
- Håndtering og parsering av XML-resultatliste i Vortex
- Rettighetsfiltrering av treffliste i Vortex basert på brukeren som utfører søket
- Presentasjon av søkeresultater i Vortex
Hva har vi fra før ?
- Innlogging av brukere (Feide/Vortex)
- Behandling av søk på generell basis (UiO-søk)
Det kreves endel arbeid i Vortex for å implementere støtte for bruk av UiO-søk som web-service for fritekstsøk. Vi bør ta sikte på å lage noe som kan gjenbrukes i størst mulig grad innenfor Vortex. Dette betyr at design-arbeidet må gjøres grunndig og kan ta noe tid. En bakdel er at vi må implementere grensesnittene i Vortex, dvs. søkeskjema og presentasjon av resultatlister. Dette er noe som allerede finnes fra før i UiO-søk. Antar at vi bør modellere UiO-søk i Vortex på samme måte som for interne dynamiske søk i Vortex. Dvs. at presentasjon av søketreff blir en egen ressurstype/dokumenttype.
Alternativ 2 - UiO-søk implementerer søkegrensesnittet og benytter Vortex som web-service for rettighetsvasking av trefflister
Søketjenesten implementerer eget søkegrensesnitt i web-applikasjonen spesifikt for søk i rettighetsbeskyttede Vortex-ressurser. Vortex brukes kun som en web-service for å vaske trefflister. Dette betyr at UiO-søk må implementere bruker-autentisering via innlogging.
Hva må gjøres ?
- Løse problematikk ifm. autentisering av søkemotor-robot i Vortex, opprette egne Ultraseek-collections for beskyttet materiale
- Autentisering av brukere må implementeres i UiO-søk (støtte for innlogging i søkeapplikasjonen)
- Lage spesiell søkeside for innloggede brukere (kan antakelig gjenbruke noe eksisterende kode)
- Spesifikasjon av XML-format for treffliste fra UiO-søk som kan rettighetsvaskes av Vortex
- Oppsett av web-service i Vortex for rettighetsvasking av treffliste, håndtering av XML, osv.
- Rettighetsfiltrering av treffliste i Vortex basert på brukeren som utfører søket
- Presentasjon av resultater i UiO-søk applikasjon (kan antakelig gjenbruke endel kode)
Hva har vi fra før ?
- Behandling av søk på generell basis (UiO-søk)
- Kode for presentasjon av søkeresultater kan antakelig gjenbrukes i noen grad.
Den største bakdelen med dette alternativet er at autentisering og innlogging må implementeres for UiO-søk, noe som ikke er planlagt å gjøre på enda en god stund fremover. En egen Vortex-spesifikk søkeside må i tillegg integreres på en fornuftig måte i resten av søkeapplikasjonen. Det er ikke opplagt hvordan dette skal håndteres. Man trenger ingen synlige endringer i Vortex-grensesnitt med denne løsningen, kun en service som vasker trefflister.
Alternativ 3 - standard søkeskjema (direkte mot UiO-søk) innenfor beskyttet Vortex-område
Egen standard HTML-søkeside direkte mot UiO-søk innenfor Vortex (med innlogging), søker i spesielle collections (blir et lokalsøk for Vortex). I dette tilfelle implementeres ikke egen innlogging for UiO-søk. Dette åpner et sikkerhetshull ved at indeks-collections med rettighetsbegrensede data ligger åpne (security by obscurity). Dette er generelt ingen god løsning mtp. på sikkerhet, men den tar kortest tid å implementere og er minst kompleks. Ikke mulig med spesifikk vasking av trefflister basert på innlogget bruker.
Hva må gjøres ?
- Løse problematikk ifm. autentisering av søkemotor-robot i Vortex, opprette egne Ultraseek-collections for beskyttet materiale
- Lage et lokalsøk innenfor et beskyttet Vortex-område
Hva har vi fra før ?
- Behandling av søk på generell basis (UiO-søk)
- Presentasjon av resultater
Dette er den minst sikre løsningen, ingen vasking av trefflister, kun begrenset hvem som har adgang til selve søkegrensesnittet.
Grove estimater for alternativer
Oppgave
| Alternativ 1 (UiO-søk ws* for Vortex) | Alternativ 2 (Vortex ws for UiO-søk) | Alternativ 3 (beskyttet Vortex-side med standard lokalsøk) |
|---|
Innlogging/autentisering av bruker som utfører søk
| - | 20dv (mye usikkerhet**)
| - |
Overordnet design
| 6dv | 5dv | -
|
Egen søkeside (grensesnitt)
| 4dv
| 3dv
| 1dv
|
Oppsett av web-service for vasking av resultatlister (alt. 2)
| 4dv
| -
| -
|
Oppsett av web-service for UiO-søk (alt. 1)
| - | 5dv
| -
|
Vasking av trefflister i Vortex
| 5dv
| 5dv
| -
|
Spesifikasjon av XML-format for trefflister
| 2dv
| 2dv
| -
|
Presentasjon av søketreff (inkludert paging-problematikk)
| 5dv | 4dv
| -
|
Indeksering av beskyttede Vortex-dokumenter, Ultraseek-oppsett
| 5dv
| 5dv
| 5dv
|
| TOTALT | 31dv (optimistisk) | 49dv (optimistisk) | 6dv (optimistisk)
|
* Web Service
** Innlogging er bare planlagt integrert i UiO-søk på lang sikt, vil være vanskelig med den nåværende kodebasen
Problemstillinger som kan få innvirkning på estimater
- Håndtering av paging ifm. rettighetsvasking av resultatlister (alternativ 1 og 2)
- Implementasjon av innlogging i søketjenesten på generell basis
- Begrense tilgang til web-service (alle alternativer)
- Begrense mengde data som prosesseseres av gangen gjennom web-service (relatert til paging-problematikk)
- Implementere effektiv vasking av rettigheter med bruker+sett av URL-er som inputdata i Vortex.
Terminologi
- Med UiO-søk menes søketjenestens applikasjon for nettsidesøk på http://www.uio.no/sok.
- Med rettighetsvasking eller vasking av trefflister menes å fjerne dokumenter fra en liste over søketreff som brukeren som utfører søket ikke har rettigheter til å lese.
- Med søkemotor eller søkemotor-robot menes søketjenestens egne søkemotor Ultraseek.
- Med forkortelsen dv menes dagsverk, altså mål for arbeidsmengde
Enhet: USIT, webredaksjon@usit.uio.no
Forfatter: Øyvind Stegard, oyvind.stegard@usit.uio.no
Dokument opprettet: 08.11.2006, endret: 09.11.2006Administrer dette dokumentet