Ejemplo de código: ASP.NET página de inicio de sesión personalizado de MVC 3

Actualizado: 19 de junio de 2015

Se aplica a: Azure

En este ejemplo se muestra cómo crear un inicio de sesión personalizado o una página de detección de dominio principal en una aplicación ASP.NET MVC3 que usa Microsoft Azure Active Directory Access Control (también conocido como servicio de Access Control o ACS). El código de este ejemplo se encuentra en el subdirectorio MVC3CustomSignInPage (C#\Websites\MVC3CustomSignInPage) del paquete de ejemplos de código de Microsoft Azure Active Directory Access Control (ACS).

Requisitos previos

Para ejecutar este ejemplo, necesitará lo siguiente:

  1. Una cuenta en el Azure Portal y un espacio de nombres Access Control.

  2. Visual Studio 2010 (cualquier versión)

  3. ASP .NET MVC3 (https://www.asp.net/mvc/mvc3)

  4. SDK de Windows Identity Foundation

Para obtener más información, consulte Requisitos previos de ACS (https://go.microsoft.com/fwlink/?LinkId=221065).

Configuración del ejemplo

La configuración de ACS necesaria para este ejemplo se puede realizar mediante el Portal de administración de ACS o el servicio de administración de ACS. En este tema se describen ambas opciones.

Opción 1: Configurar el ejemplo a través del Portal de administración de ACS

Para configurar el ejemplo mediante el Portal de administración de ACS

  1. Vaya al Portal de administración de Microsoft Azure (https://manage.WindowsAzure.com), inicie sesión y, a continuación, haga clic en Active Directory. (Sugerencia de solución de problemas: falta el elemento "Active Directory" o no está disponible)

  2. Para crear un espacio de nombres Access Control, haga clic en Nuevo, App Services, Access Control y, a continuación, en Creación rápida. (O haga clic en espacios de nombres Access Control antes de hacer clic en Nuevo.)

  3. Para administrar el espacio de nombres Access Control, seleccione el espacio de nombres y, a continuación, haga clic en Administrar. (O haga clic en espacios de nombres Access Control, seleccione el espacio de nombres y, a continuación, haga clic en Administrar.)

    Esta acción abre el portal de administración de Access Control Service.

  4. Para establecer relaciones con los proveedores de identidades, haga clic en Proveedores de identidades y luego seleccione los proveedores de identidades que desea usar como, por ejemplo, Google, Yahoo! y Facebook. Para obtener más información sobre cómo obtener las claves de requisitos previos para Facebook, consulte How To: Configure Facebook as an Identity Provider (https://go.microsoft.com/fwlink/?LinkId=221151). Luego haga clic en el vínculo Inicio situado en el menú de navegación izquierdo de la página para volver a la página principal.

  5. Para registrar la aplicación con ACS, en el portal de administración de servicios de Access Control, haga clic en el vínculo Aplicaciones de usuario autenticado ubicado en la página principal, seleccione Agregar y escriba la siguiente información en el formulario:

    • En el campo Nombre, escriba ASPNET MVC3 Custom.

    • En el campo Dominio, escriba https://localhost:64000/

    • En el campo Url de retorno , escriba . https://localhost:64000/Account/SignIn

    • En el campo Formato de token, seleccione SAML 2.0.

    • En la sección Proveedores de identidades, seleccione Facebook, Google, Windows Live ID y Yahoo!

    • En el campo Firma de token, seleccione Usar el certificado de espacio de nombres del servicio (estándar).

  6. Haga clic en Guardar y luego vaya a la página principal.

  7. Con la aplicación de usuario de confianza configurada, ahora es el momento de crear las reglas que determinan las notificaciones que ACS emitirá a la aplicación. En este ejemplo, se transmitirán todas las notificaciones emitidas por los proveedores de identidades. Para crear esta regla, haga clic en la página Grupos de reglas, situada en la página principal y luego haga clic en el grupo de reglas Grupo de reglas predeterminado para ASPNET MVC3 Custom.

  8. En la parte inferior de la página, haga clic en el vínculo Generar. Asegúrese de que Facebook, Yahoo y estén seleccionados y haga clic en Generar.

  9. Con ACS configurado, abra Visual Studio.

Opción 2: Configurar el ejemplo mediante el servicio de administración de ACS

La solución de ejemplo Visual Studio tiene una aplicación de línea de comandos denominada ConfigureSample que usa el servicio de administración de ACS y los asistentes comunes definidos en la biblioteca de clases Common. Esta aplicación se puede usar para configurar el espacio de nombres de Access Control para usarlo con este ejemplo.

Para configurar el ejemplo mediante el servicio de administración de ACS

  1. Actualice la biblioteca de clases Comunes con información sobre el espacio de nombres de Access Control. Abra SamplesConfiguration.cs y escriba la información siguiente:

    • ServiceNamespace : este es el espacio de nombres que se usa con ACS.

    • ManagementServiceIdentityName: nombre de la cuenta del servicio de administración.

    • ManagementServiceIdentityKey: contraseña asociada a la cuenta del servicio de administración.

    • AcsHostUrl : este es el nombre de host de ACS.

  2. En el proyecto ConfigureSample, abra Program.cs y especifique la información siguiente:

    1. applicationId: identificador de la aplicación de Facebook.

    2. applicationSecret: secreto de la aplicación de Facebook.

    Para obtener más información sobre cómo obtener estas claves, consulte How To: Configure Facebook as an Identity Provider (https://go.microsoft.com/fwlink/?LinkId=221151).

  3. Ejecute la aplicación ConfigureSample en Visual Studio, que configurará ACS para ejecutar este ejemplo.

Ejecutar el ejemplo

Para ejecutar el ejemplo

  1. Abra el ejemplo ubicado en Websites\MVC3CustomSignInPage\MVC3CustomSignInPage.sln en Visual Studio.

  2. Para agregar ACS como referencia de STS, haga clic con el botón derecho en MVCCustomSignInPage y seleccione Agregar referencia de STS en el menú contextual.

  3. En el cuadro de diálogo, especifique la raíz de la aplicación web en el campo URI de la aplicación y haga clic en Siguiente. Para este ejemplo, este valor es https://localhost:64000/

    Nota

    La barra diagonal final es importante, ya que se alinea con los valores especificados en ACS para el usuario de confianza. El asistente mostrará una advertencia que indica que su sitio no usa SSL. Acepte esta advertencia. Para ello, haga clic en el botón , pero recuerde que los sitios web de producción deben usar SSL para este tipo de escenarios.

  4. En la ventana siguiente, seleccione el botón de radio Usar STS existente y escriba el URI de los metadatos de WS-Federation publicados por el espacio de nombres Access Control. Encontrará dicho URI en el portal en Integración de aplicaciones. Si el espacio de nombres de Access Control es mvc3samples, el URI se https:// mvc3samples.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml. Tras especificar este valor, haga clic en Siguiente.

  5. Puesto que su sitio web no requiere tokens cifrados, haga clic en Siguiente en el resto de cuadros de diálogo y luego haga clic en Finalizar.

  6. La aplicación ahora está configurada para usar ACS con la protección de recursos manta de ASP .NET. Es necesario deshabilitar dicha protección para poder utilizar nuestra propia página de inicio de sesión personalizada que dispone de filtros de autenticación MVC3 más detallados. En el archivo web.config, en configuración, elimine el valor siguiente:

    <location path="FederationMetadata">
       <system.web>
         <authorization>
           <allow users="*" />
         </authorization>
       </system.web>
    </location>
    
  7. En system.web elimine el valor siguiente:

    <authorization>
         <deny users="?" />
       </authorization>
    

    Tras eliminar estos dos valores, ASP .NET no realizará ningún tipo de autenticación o autorización en nuestro nombre.

  8. Presione F5 en Visual Studio para ejecutar la aplicación. El explorador le llevará a la página principal de la aplicación.

  9. Haga clic en el vínculo Iniciar sesión situado en la esquina superior derecha y seleccione el proveedor de identidades de la lista que se muestra. Después de la autenticación, volverá a la página Principal y la información del usuario se mostrará en la esquina superior derecha (tenga en cuenta que no proporcionará un nombre de usuario).

  10. Haga clic en Cerrar sesión para cerrar la sesión. De este modo, se borrarán las cookies de la sesión y volverá a la página principal.

  11. Haga clic en el vínculo Directorio. Puesto que ya no está autenticado, se le pedirá que seleccione un proveedor de identidades para tener acceso a la página Directorio.

Esto se debe a que la página Directorio (Índice en DirectoryController) está protegida mediante el atributo RequireAuthenticationAttribute. Tras seleccionar un proveedor de identidades y realizar la autenticación, se le redirigirá de nuevo a la página Directorio.