Procedura: Compilare un'applicazione Web Form ASP.NET in grado di riconoscere attestazioni con WIFHow To: Build Claims-Aware ASP.NET Web Forms Application Using WIF

Si applica aApplies To

  • Microsoft® Windows® Identity Foundation (WIF)Microsoft® Windows® Identity Foundation (WIF)

  • Web Form ASP.NET®ASP.NET® Web Forms

RiepilogoSummary

Questo argomento include le procedure dettagliate per creare una semplice applicazione Web Form ASP.NET in grado di riconoscere attestazioni.This How-To provides detailed step-by-step procedures for creating simple claims-aware ASP.NET Web Forms application. Sono inoltre disponibili istruzioni su come testare la semplice applicazione Web Form ASP.NET in grado di riconoscere attestazioni per la corretta implementazione dell'autenticazione federata.It also provides instructions for how to test the simple claims-aware ASP.NET Web Forms application for successful implementation of federated authentication. La procedura decritta in questo argomento non include istruzioni dettagliate per la creazione di un servizio token di sicurezza e presuppone che il servizio sia già stato configurato.This How-To does not have detailed instructions for creating a Security Token Service (STS), and assumes you have already configured an STS.

SommarioContents

  • ObiettiviObjectives

  • Riepilogo dei passaggiSummary of Steps

  • Passaggio 1: creare una semplice applicazione Web Form ASP.NETStep 1 – Create a Simple ASP.NET Web Forms Application

  • Passaggio 2: configurare l'applicazione Web Form ASP.NET per l'autenticazione basata su attestazioniStep 2 – Configure ASP.NET Web Forms Application for Claims-Based Authentication

  • Passaggio 3: eseguire i test sulla soluzioneStep 3 – Test Your Solution

ObiettiviObjectives

  • Configurare l'applicazione Web Form ASP.NET per l'autenticazione basata su attestazioniConfigure ASP.NET Web Forms application for claims-based authentication

  • Testare l'applicazione Web Form ASP.NET in grado di riconoscere attestazioniTest successful claims-aware ASP.NET Web Forms application

Riepilogo dei passaggiSummary of Steps

  • Passaggio 1: creare una semplice applicazione Web Form ASP.NETStep 1 – Create Simple ASP.NET Web Forms Application

  • Passaggio 2: configurare l'applicazione Web Form ASP.NET per l'autenticazione federataStep 2 – Configure ASP.NET Web Forms Application for Federated Authentication

  • Passaggio 3: eseguire i test sulla soluzioneStep 3 – Test Your Solution

Passaggio 1: creare una semplice applicazione Web Form ASP.NETStep 1 – Create a Simple ASP.NET Web Forms Application

In questo passaggio si creerà una nuova applicazione Web Form ASP.NET.In this step, you will create a new ASP.NET Web Forms application.

Per creare un'applicazione ASP.NET sempliceTo create a simple ASP.NET application

  1. Avviare Visual Studio e fare clic su File, Nuovo e Progetto.Start Visual Studio and click File, New, and then Project.

  2. Nella finestra Nuovo progetto fare clic su Applicazione Web Form ASP.NET.In the New Project window, click ASP.NET Web Forms Application.

  3. In Nome immettere TestApp e fare clic su OK.In Name, enter TestApp and press OK.

Passaggio 2: configurare l'applicazione Web Form ASP.NET per l'autenticazione basata su attestazioniStep 2 – Configure ASP.NET Web Forms Application for Claims-Based Authentication

In questo passaggio si aggiungeranno voci di configurazione al file di configurazione Web.config dell'applicazione Web Form ASP.NET per renderla in grado di riconoscere attestazioni.In this step you will add configuration entries to the Web.config configuration file of your ASP.NET Web Forms application to make it claims-aware.

Per configurare l'applicazione ASP.NET per l'autenticazione basata su attestazioniTo configure ASP.NET application for claims-based authentication

  1. Aggiungere le seguenti voci di sezione di configurazione al file di configurazione Web.config subito dopo l'elemento di apertura <configuration>:Add the following configuration section entries to the Web.config configuration file immediately after the <configuration> opening element:

    <configSections>  
      <section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />  
      <section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />  
    </configSections>  
    
  2. Aggiungere un elemento <location> che consente l'accesso ai metadati di federazione dell'applicazione:Add a <location> element that enables access to the application’s federation metadata:

    <location path="FederationMetadata">  
      <system.web>  
        <authorization>  
          <allow users="*" />  
        </authorization>  
      </system.web>  
    </location>  
    
  3. Aggiungere le seguenti voci di configurazione all'interno di elementi <system.web> per negare le autorizzazioni agli utenti, disabilitare l'autenticazione nativa e abilitare WIF per gestire l'autenticazione.Add the following configuration entries within the <system.web> elements to deny users, disable native authentication, and enable WIF to manage authentication.

    <authorization>  
      <deny users="?" />  
    </authorization>  
    <authentication mode="None" />  
    
  4. Aggiungere un elemento <system.webServer> che definisce i moduli per l'autenticazione federata.Add a <system.webServer> element that defines the modules for federated authentication. Si noti che l'attributo PublicKeyToken deve essere uguale all'attributo PublicKeyToken per le voci <configSections> aggiunte in precedenza:Note that the PublicKeyToken attribute must be the same as the PublicKeyToken attribute for the <configSections> entries added earlier:

    <system.webServer>  
      <modules>  
        <add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />  
        <add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />  
      </modules>  
    </system.webServer>  
    
  5. Aggiungere le voci di configurazione correlate a Windows Identity Foundation seguenti e assicurarsi che l'URL e il numero di porta dell'applicazione ASP.NET corrispondano ai valori nella voce <audienceUris>, all'attributo realm dell'elemento <wsFederation> e all'attributo reply dell'elemento <wsFederation>.Add the following Windows Identity Foundation related configuration entries and ensure that your ASP.NET application’s URL and port number match the values in the <audienceUris> entry, realm attribute of the <wsFederation> element, and the reply attribute of the <wsFederation> element. Assicurarsi anche che il valore issuer sia appropriato per l'URL del servizio token di sicurezza.Also ensure that the issuer value fits your Security Token Service (STS) URL.

    <system.identityModel>  
        <identityConfiguration>  
            <audienceUris>  
                <add value="http://localhost:28503/" />  
            </audienceUris>  
            <issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">  
                <trustedIssuers>  
                    <add thumbprint="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234" name="YourSTSName" />  
                </trustedIssuers>   
            </issuerNameRegistry>  
            <certificateValidation certificateValidationMode="None" />  
        </identityConfiguration>  
    </system.identityModel>  
    <system.identityModel.services>  
        <federationConfiguration>  
            <cookieHandler requireSsl="false" />  
            <wsFederation passiveRedirectEnabled="true" issuer="http://localhost:13922/wsFederationSTS/Issue" realm="http://localhost:28503/" reply="http://localhost:28503/" requireHttps="false" />  
        </federationConfiguration>  
    </system.identityModel.services>  
    
  6. Aggiungere un riferimento all'assembly System.IdentityModel.Add reference to the System.IdentityModel assembly.

  7. Compilare la soluzione e assicurarsi che non ci siano errori.Compile the solution to make sure there are no errors.

Passaggio 3: eseguire i test sulla soluzioneStep 3 – Test Your Solution

In questo passaggio si testerà l'applicazione Web Form ASP.NET configurata per l'autenticazione basata sulle attestazioni.In this step you will test your ASP.NET Web Forms application configured for claims-based authentication. Per eseguire un test di base, si aggiungerà codice che visualizza le attestazioni nel token rilasciato dal servizio token di sicurezza.To perform a basic test, you will add code that displays claims in the token issued by the Security Token Service (STS).

Per testare l'applicazione Web Form ASP.NET per l'autenticazione basata su attestazioniTo test your ASP.NET Web Form application for claims-based authentication

  1. Aprire il file Default.aspx nel progetto TestApp e sostituire il markup esistente con quello seguente:Open the Default.aspx file under the TestApp project and replace its existing markup with the following markup:

    %@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>  
    
    <!DOCTYPE html>  
    
    <html>  
    <head id="Head1" runat="server">  
        <title></title>  
    </head>  
    <body>  
        <h1><asp:label ID="signedIn" runat="server" /></h1>  
        <asp:label ID="claimType" runat="server" />  
        <asp:label ID="claimValue" runat="server" />  
        <asp:label ID="claimValueType" runat="server" />  
        <asp:label ID="claimSubjectName" runat="server" />  
        <asp:label ID="claimIssuer" runat="server" />  
    </body>  
    </html>  
    
  2. Salvare Default.aspx e quindi aprire il file code-behind denominato Default.aspx.cs.Save Default.aspx, and then open its code behind file named Default.aspx.cs.

    Nota

    Il file Default.aspx.cs potrebbe essere nascosto sotto Default.aspx in Esplora soluzioni.Default.aspx.cs may be hidden beneath Default.aspx in Solution Explorer. Se Default.aspx.cs non è visibile, espandere Default.aspx facendo clic sul triangolo accanto.If Default.aspx.cs is not visible, expand Default.aspx by clicking on the triangle next to it.

  3. Sostituire il codice esistente nel metodo Page_Load in Default.aspx.cs con il codice seguente:Replace the existing code in the Page_Load method of Default.aspx.cs with the following code:

    using System;  
    using System.IdentityModel;  
    using System.Security.Claims;  
    using System.Threading;  
    using System.Web.UI;  
    
    namespace TestApp  
    {  
        public partial class _Default : System.Web.UI.Page  
        {  
            protected void Page_Load(object sender, EventArgs e)  
            {  
                ClaimsPrincipal claimsPrincipal = Thread.CurrentPrincipal as ClaimsPrincipal;  
    
                if (claimsPrincipal != null)  
                {  
                    signedIn.Text = "You are signed in.";  
    
                    foreach (Claim claim in claimsPrincipal.Claims)  
                    {  
                        claimType.Text = claim.Type;  
                        claimValue.Text = claim.Value;  
                        claimValueType.Text = claim.ValueType;  
                        claimSubjectName.Text = claim.Subject.Name;  
                        claimIssuer.Text = claim.Issuer;  
                    }  
                }  
                else  
                {  
                    signedIn.Text = "You are not signed in.";  
                }  
            }  
        }  
    }  
    
  4. Salvare Default.aspx.cs e compilare la soluzione.Save Default.aspx.cs, and build the solution.

  5. Eseguire la soluzione premendo F5.Run the solution by pressing the F5 key.

  6. Dovrebbe essere visualizzata la pagina che mostra le attestazioni nel token emesso dal servizio token di sicurezza.You should be presented with the page that displays the claims in the token that was issued to you by the Security Token Service.