Sigurd Snørteland



Windows User ID i Silverlight

SilverlightInitParams-1

Når man utvikler forretningsapplikasjoner har man ofte behov for å få tilgang til windows user id’en til den påloggede brukeren, og i ASP.NET kan man gjør dette med følgende kommando: Page.User.Identity.Name. I Silverlight har man derimot ikke tilgang til denne informasjonen, noe som kan skyldes at Silverlight skal være crossplatform og at dette kan skape vansker i en slik sammenheng, og/eller det kan skyldes den restriktive sikkerhetspolicy som Microsoft har satt i Silverlight.

En måte å komme rundt denne begrensningen på er å kombinere asp.net og InitParameters-funksjonen i Silverlight. I tidligere versjoner av Silverlight hadde man en egen aps-tagg for silverlight (<asp:silverlight>) og dermed kunne man fra asp.net sette initParameteret i runtime. Nå er denne taggen fjernet fra asp.net og man må i stede benytte en vanlig <object>-tagg. Sammen med den endringen forsvant også muligheten for å kommunisere med Silverlight-applikasjonens initParametere direkte fra asp.net. Løsningen på dette er å benytte en <asp:Literal>-tagg inne i Silverlight-objektdefinisjonen, og skrive hele initParameteret-taggen i runtime. Se bildet nedenfor for detaljer:

SilverlightInitParams-2

I ‘Page_Load’ metoden til asp-siten henter jeg windowsID’en fra den påloggede brukeren og skriver denne verdien til <asp:Literal>-taggen som på bildet nedenfor:

SilverlightInitParams-3

I App-filen i Silverlight plukker jeg ut initParameteret og setter den inn MainPage gjennom at jeg har oppdaterte konstruktøren til MainPage til å ta imot dette parameteret (se bildet lenger nede). Nedenfor ser dere StartUp-metoden til App-filen:

SilverlightInitParams-4

Bildet under viser hvordan userid-parameteret ender opp i MainPage-kontrolleren og blir presentert som tekst for brukeren.

SilverlightInitParams-5

Selv om jeg i dette eksemplet tok utgangspunkt i å sende windows user id’en inn til silverlight under runtime, så kan metoden benyttes for å sende alle typer data inn til Silverlight. Man kan f.eks. benytte denne metoden for å lese konfigurasjons-instillinger fra web.config i asp.net-applikasjonen og sende dem inn til Silverlight som initparametre.

Klikk på bildet nedenfor for å laste ned kildekoden til dette eksemplet:

download_SilverlightInitParams

Advertisements

Trackbacks & Pingbacks

Comments

  1. * SondreB says:

    Kan være viktig å poengtere at man ikke må bygge sikkerhet inn i en Silverlight-applikasjon basert på overnevnte eksempel. Nyttig for å vise hvem man er pålogget som, men det er veldig lett å manipulere brukernavnet. Viktig at man også foretar nødvendige sjekker på server-side når man kommunisere tilbake og at man dra verifisere. Benytter man WCF RIA Services og Authentication Domain Service får man et WebContext.User objekt man kan jobbe med som inneholder brukernavnet.

    | Reply Posted 7 years, 6 months ago


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: