Как выполнить: создание приложения ASP.NET Web Forms, поддерживающего утверждения, с использованием WIFHow To: Build Claims-Aware ASP.NET Web Forms Application Using WIF

ПрименениеApplies To

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

  • Веб-формы ASP.NET®ASP.NET® Web Forms

СводкаSummary

В этом практическом руководстве представлены подробные пошаговые процедуры по созданию простого приложения веб-форм ASP.NET с поддержкой утверждений.This How-To provides detailed step-by-step procedures for creating simple claims-aware ASP.NET Web Forms application. Также здесь приводятся инструкции по тестированию простого приложения веб-форм ASP.NET с поддержкой утверждений для реализации федеративной проверки подлинности.It also provides instructions for how to test the simple claims-aware ASP.NET Web Forms application for successful implementation of federated authentication. В этом практическом руководстве не приводятся подробные инструкции по созданию службы маркеров безопасности (STS) и подразумевается, что вы уже выполнили ее настройку.This How-To does not have detailed instructions for creating a Security Token Service (STS), and assumes you have already configured an STS.

ОписаниеContents

  • ЦелиObjectives

  • Сводка действийSummary of Steps

  • Шаг 1. Создание простого приложения веб-форм ASP.NETStep 1 – Create a Simple ASP.NET Web Forms Application

  • Шаг 2. Настройка приложения веб-форм ASP.NET для проверки подлинности на основе утвержденийStep 2 – Configure ASP.NET Web Forms Application for Claims-Based Authentication

  • Шаг 3. Тестирование решенияStep 3 – Test Your Solution

ЦелиObjectives

  • Настройка приложения веб-форм ASP.NET для проверки подлинности на основе утвержденийConfigure ASP.NET Web Forms application for claims-based authentication

  • Тестирование приложения веб-форм ASP.NET с поддержкой утвержденийTest successful claims-aware ASP.NET Web Forms application

Сводка действийSummary of Steps

  • Шаг 1. Создание простого приложения веб-форм ASP.NETStep 1 – Create Simple ASP.NET Web Forms Application

  • Шаг 2. Настройка приложения веб-форм ASP.NET для федеративной проверки подлинностиStep 2 – Configure ASP.NET Web Forms Application for Federated Authentication

  • Шаг 3. Тестирование решенияStep 3 – Test Your Solution

Шаг 1. Создание простого приложения веб-форм ASP.NETStep 1 – Create a Simple ASP.NET Web Forms Application

На этом шаге создается новое приложение веб-форм ASP.NET.In this step, you will create a new ASP.NET Web Forms application.

Создание простого приложения ASP.NETTo create a simple ASP.NET application

  1. Запустите Visual Studio и выберите Файл, Создать и затем Проект.Start Visual Studio and click File, New, and then Project.

  2. В окне Новый проект выберите Приложение веб-форм ASP.NET.In the New Project window, click ASP.NET Web Forms Application.

  3. В поле Имя введите TestApp и нажмите кнопку ОК.In Name, enter TestApp and press OK.

Шаг 2. Настройка приложения веб-форм ASP.NET для проверки подлинности на основе утвержденийStep 2 – Configure ASP.NET Web Forms Application for Claims-Based Authentication

На этом шаге в файл конфигурации Web.config приложения веб-форм ASP.NET добавляются записи конфигурации, позволяющие реализовать поддержку утверждений.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.

Настройка приложения ASP.NET для проверки подлинности на основе утвержденийTo configure ASP.NET application for claims-based authentication

  1. Добавьте в файл конфигурации Web.config следующий раздел конфигурации непосредственно после открывающего элемента <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. Добавьте элемент <location>, который обеспечивает доступ к метаданным федерации приложения: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. Добавьте следующие записи конфигурации в элементы <system.web>, чтобы запретить пользователей, отключить собственную проверку подлинности и включить платформу WIF для управления проверкой подлинности.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. Добавьте элемент <system.webServer>, который определяет модули для федеративной проверки подлинности.Add a <system.webServer> element that defines the modules for federated authentication. Обратите внимание, что атрибут PublicKeyToken должен иметь то же значение, что и атрибут PublicKeyToken для ранее добавленных записей <configSections>: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. Добавьте следующие записи конфигурации платформы Windows Identity Foundation и убедитесь, что URL-адрес и номер порта приложения ASP.NET соответствуют значениям в записи <audienceUris>, атрибуте realm элемента <wsFederation> и атрибуте reply элемента <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. Также убедитесь, что значение issuer соответствует URL-адресу службы маркеров безопасности (STS).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="true" />  
            <wsFederation passiveRedirectEnabled="true" issuer="http://localhost:13922/wsFederationSTS/Issue" realm="http://localhost:28503/" reply="http://localhost:28503/" requireHttps="true" />  
        </federationConfiguration>  
    </system.identityModel.services>  
    
  6. Добавьте ссылку на сборку System.IdentityModel.Add reference to the System.IdentityModel assembly.

  7. Скомпилируйте решение и убедитесь в отсутствии ошибок.Compile the solution to make sure there are no errors.

Шаг 3. Тестирование решенияStep 3 – Test Your Solution

На этом шаге выполняется тестирование приложения веб-форм ASP.NET, настроенного для проверки подлинности на основе утверждений.In this step you will test your ASP.NET Web Forms application configured for claims-based authentication. Для базовой проверки необходимо добавить код, который отображает утверждения в маркере безопасности, выданном службой STS.To perform a basic test, you will add code that displays claims in the token issued by the Security Token Service (STS).

Проверка приложения веб-форм ASP.NET для проверки подлинности на основе утвержденийTo test your ASP.NET Web Form application for claims-based authentication

  1. Откройте файл Default.aspx в проекте TestApp и замените существующую разметку следующей: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. Сохраните файл Default.aspx, а затем откройте его файл кода программной части с именем Default.aspx.cs.Save Default.aspx, and then open its code behind file named Default.aspx.cs.

    Примечание

    Файл Default.aspx.cs может быть скрыт в узле Default.aspx в обозревателе решений.Default.aspx.cs may be hidden beneath Default.aspx in Solution Explorer. Если файл Default.aspx.cs не отображается, разверните узел Default.aspx, щелкнув значок треугольника рядом с ним.If Default.aspx.cs is not visible, expand Default.aspx by clicking on the triangle next to it.

  3. Замените существующий код метода Page_Load в файле Default.aspx.cs следующим: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. Сохраните файл Default.aspx.cs и выполните построение решения.Save Default.aspx.cs, and build the solution.

  5. Запустите решение, нажав клавишу F5.Run the solution by pressing the F5 key.

  6. Появится страница, на которой будут отображены утверждения в маркере безопасности, выданном службой маркеров безопасности.You should be presented with the page that displays the claims in the token that was issued to you by the Security Token Service.