Innhold

Geodata AS og Geoinsight AS er virksomheter i Geogroup AS

  • Geodata
  • Geoinsight
  • Geogroup

Bruk av sikrede tjenester i Silverlight

Av og til er det ønskelig å benytte sikrede tjenester som f.eks GeocacheBasis fra GeodataOnline i Silverlight Webapplikasjoner. Det er i utgangspunktet to metoder for å sikre tjenester i ArcGIS Server, token-modellen og HTTP autentisering. Siden token-modellen er vanligst er det denne vi tar utgangspunkt i dette blogginnlegget. 

En token kan man lage ved å gå til en egen “getToken.html”-side på ArcGIS Server installasjonen eller man kan gjøre et http-kall til siden. For å minimere misbruk er det vanlig å sende med enten en HTTP-referrer (URL’en til applikasjonen som bruker tjenesten) eller IP-adresse (til klienten som kaller tjenesten).

Problemet er at Silverlight ikke sender med HTTP-referrer i HTTP-kall (ESRI har gjort Microsoft klar over problemet). For å omgå dette er det par mulige løsninger:

  • Bruke en proxy-side – problemet da er at all trafikk går igjennom denne, og den er vid åpen for andre å bruke med mindre man legger proxy’en i selve webapplikasjonen og sikrer denne.
  • Gjøre et http-kall fra klienten til token-siden, og så sette token i klientkoden – problemet da er at brukeren kan se på HTTP-trafikken og se brukernavn/passord.

Et annet alternativ kan være:

  • Bruk en ASPX-side med codebehind som “host-page” (den siden som pakker inn Silverlight-applikasjonen din). Default er vel dette en HTML-side. Kopier f.eks. HTML-koden over i default.aspx.


  • I aspx-siden, under object-elementet som refererer xap-filen (f.eks Default.aspx) legg til en parameter som er tilgjengelig fra codebehind-filen:

  • I codebind-filen (f.eks default.aspx.cs) sin Page_Load legger du til denne linjen:

  • Legg også til funksjonene GetToken() og GetContent() i codebehind-filen (f.eks default.aspx.cs):

  • Sjekken på 127.0.0.1 er for å kunne kjøre under localhost (da blir IP’en dette, og ikke den IP’en du har når du treffer den eksterne ArcGIS Serveren).
  • GetContent() returnere teksten fra en HTTP GET
  • Husk å sette inn riktig URL til getToken-siden, samt gyldig brukernavn og passord.
    • Neste steg er å bruke token parameteren i Silverlight-koden.
    • Legg til følgende i Application_Startup i App.xml.cs filen:

    • Dermed ligger token’et som en ressurs, og kan settes på de nødvendige layer objektene i Map-kontrollen XAML-filen (f.eks MainPage.xaml) slik:

    Kommentarer:

    Legg til kommentar
     
       
     
    Spam tiltak Image for user verification