Windows Identity in Silverlight

Um die Windows Identität eines Anwenders an Silverlight weiterzugeben, kann man sich einem recht einfachen Mechanismus bedienen, den InitParameters. Hierzu muss man lediglich in der hostenden Seite den Silverlight-Control-Host erweitern

   1:  <object data="data:application/x-silverlight-2," 
   2:     type="application/x-silverlight-2" 
   3:     width="100%" height="100%">
   4:      <param name="source" value="ClientBin/PassWindowsIdentitySample.xap"/>
   5:      <param name="onError" value="onSilverlightError" />
   6:      <param name="background" value="white" />
   7:      <param name="minRuntimeVersion" value="4.0.50826.0" />
   8:      <param name="autoUpgrade" value="true" />
   9:      <!-- Pass Windows Identity-->
  10:      <param name="Initparams" 
  11:            value="WindowsIdentity=<%=HttpContext.Current.User.Identity.Name %>" />
  12:      <!-- END Pass Windows Identity-->
  13:       <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" 
  14:            style="text-decoration:none">
  15:         <img src="http://go.microsoft.com/fwlink/?LinkId=161376" 
  16:              alt="Get Microsoft Silverlight" style="border-style:none"/>
  17:       </a>
  18:  </object>

In der eigentlichen Silverlight Anwendung muss dann lediglich der InitParameter innerhalb des ApplicationStartUp Events abgefragt und in einer beliebigen Struktur gespeichert werden:

   1:  private void Application_Startup(object sender, StartupEventArgs e)
   2:  {
   3:      String currentUser = String.Empty;
   4:              
   5:      if(e.InitParams.TryGetValue("WindowsIdentity",out currentUser))
   6:           Settings.Instance.UserName = currentUser;
   7:   
   8:      this.RootVisual = new MainPage();
   9:  }

 

The SharePoint 2010 Way

Platziert man die Silverlight Anwendung im Kontext von SharePoint 2010 so bietet das SharePoint Client Object Model for Silverlight hierbei eine sehr nette alternative Möglichkeit um den aktuell angemeldeten Windows Benutzer in Silverlight zu identifizieren. Hierzu muss man zunächst innerhalb der Silverlight Anwendung die beiden Assemblies

  • Microsoft.SharePoint.Client.Silverlight.dll
  • Microsoft.SharePoint.Client.Silverlight.Runtime.dll

referenzieren. In der entsprechenden Klasse muss natürlich noch der Namespace des Client Object Models - Microsoft.SharePoint.Client - bekannt gemacht werden.

 

   1:  private User currentUser;
   2:  private void Application_Startup(object sender, 
   3:       StartupEventArgs e)
   4:  {
   5:      var context = ClientContext.Current;
   6:      currentUser = context.Web.CurrentUser;
   7:      context.Load(currentUser);
   8:      context.ExecuteQueryAsync(LoadSucceeded, LoadFailed);
   9:      this.RootVisual = new MainPage();
  10:  }
  11:   
  12:  private void LoadSucceeded(object sender, 
  13:       ClientRequestSucceededEventArgs e)
  14:  {
  15:      Settings.Instance.UserName = currentUser.LoginName;
  16:  }
  17:   
  18:  private void LoadFailed(object sender, 
  19:       ClientRequestFailedEventArgs e)
  20:  {
  21:      throw e.Exception;
  22:  }

Wie man sieht, bieten beide Möglichkeiten einfachen Zugriff auf den aktuell angemeldeten Benutzer. Gerade im SharePoint Umfeld ein sehr häufig benötigtes Gut.

 

Technorati-Tags: ,
DotNetKicks-DE Image
Published Mittwoch, 26. Januar 2011 07:16 von ThorstenHans
Abgelegt unter: ,

Kommentare

Keine Kommentare

Kommentar abgeben

(verpflichtend) 
(verpflichtend) 
(optional)
(verpflichtend)