Show me the Claims! Una semplice ricetta per creare una visual web part che mostra i claim associati al current user

Avete finalmente creato la vostra prima Claim Based Authentication Web Application. Ottimo! A questo punto magari vi starete chiedendo:

  • Quali e quanti sono i claim associati al mio login?
  • Come sono descritti?
  • Chi li ha emessi?

Ebbene, state leggendo l'articolo giusto! Qui di seguito vi descrivo gli step principali da seguire per creare tramite Visual Studio 2010 una semplice Visual Web Part che mostri i claim associati all'utente corrente.

Ecco la ricetta:

  • Create un nuovo progetto VS2010 di tipo Sharepoint 2010 Visual Web Part ( non Sanboxed )
  • Nella parte di design della vostra visual web part inserite un GridView control (GridView1) e un label control (Label1).
  • Come riferimenti ad assembly aggiungete:
    • Microsoft.SharePoint
    • Microsoft.SharePoint.Security
    • Microsoft.IdentityModel
  • Nel file .cs che contiene il metodo "Page_Load" aggiungete "using Microsoft.IdentityModel.Claims;"
  • Nel metodo "Page_Load" della vostra visual web part inserite del codice che assomiglia al seguente:

protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                IClaimsPrincipal cp = Page.User as IClaimsPrincipal;
                IClaimsIdentity ci = (IClaimsIdentity)cp.Identity;

                GridView1.DataSource = ci.Claims;
                Label1.Text = "Found " + ci.Claims.Count + " claims for current user ";
                GridView1.DataBind();
            }
            catch
            {
                Label1.Text = "No claims found";
            }
        }

  • Inserite la web part in una feature creata appositamente, con scope "site".
  • Completate la configurazione come desiderate
  • Compilate e create il WSP

A questo punto potete eseguire il deploy del WSP nella vostra farm di test ( si sconsiglia di eseguire il deploy diretto in ambienti di produzione senza prima aver testato la solution nel proprio ambiente di test ) ed abilitare la feature in una site collection contenuta in una Web Application Claim Based.

Se inserite la web part in una pagina .aspx il risultato dovrebbe essere simile al seguente:

 

 

NOTA BENE :

Il codice e la procedura mostrata sono a solo scopo illustrativo, e devono essere considerati come una semplcie "guida" allo sviluppo. In nessun modo vanno considerati come completi e corretti.

Si declina ogni responsabilità per l'uso e per gli effeti dell'uso del codice qui mostrato.