# data[].attributes.attachment_link.title
Building a Single Page Application with ASP.NET and AngularJS

# data[].attributes.attachment_link.description
In this breakout session, we'll see how to power an AngularJS Single Page Application using both ASP.NET Web API and SignalR for back-end data services. You'll learn how to get started building web applications with AngularJS, how to leverage HTML5 features like local storage and pushState, providing efficient server resources via HTTP and web sockets (sing SignalR), important routing configuration concerns, testing and deployment.

# data[].attributes.body
La aplicación se envía al navegador y la página no se recarga durante el uso de la aplicación. Una aplicación con esta arquitectura podría realizar cualquier función que desarrolle una aplicación tradicional de escritorio ya que el tiempo de respuesta es mucho más rápido que el de una aplicación web tradicional.
Características de las SPA:
-En una SPA la navegación se integra principalmente en el cliente,
esto quiere decir que desde que un usuario hace clic en un enlace hasta
que se renderiza el html final, todo este proceso se gestiona en el navegador.
- En cuanto a la arquitectura de la aplicación, la mayor parte de la funcionalidad se lleva al cliente. Lo podríamos ver como un fat-client que se carga desde un servidor web.
-Las tres plataformas de SPA más utilizadas son Java applets, Flash/Flex y JavaScript.

# data[].attributes.body
La tendencia actual es llevar cada vez más características al navegador, al lado cliente. En lugar de depender tanto del servidor o de plugins nos basamos en HTML5, CSS3 y JavaScript para crear las aplicaciones, y el servidor se limita a enviar y recibir los datos de manera rápida y eficiente. Así nacen las denominadas Single Page Applications o SPAs.

# data[].attributes.body
3. Explique cómo funciona el modelo SPA (Single Page Application) en el entorno de asp.net.

# data[].attributes.attachment_link.provider_name
Innovación y Oportunidades para Empresas de Desarrollo

# data[].attributes.attachment_link.readable_text
Compute @ $0.12 / hour

Web Edition - Up to 1 GB relational

Messages @ $0.15/100K message operations

Storage @ $0.15 / GB stored

Business Edition - Up to 10 GB relational database @ $99.99

Including Service Bus messages and Access Control tokens

Storage Transactions @ $0.01 / 10K

Para los tres servicios el ancho de banda tendrá un precio de entrada de $0.10 usd y de salida de $0.15 usd

Los socios tendrán acceso a diferentes de recursos y beneficios al trabajar sobre la plataforma:

5% de descuento para socios

Windows Azure Platform QuicStart: Recursos para iniciar un negocio en Windows Azure

Socios y emprendedores del programa BizSpark con subscripción a MSDN de tipo Premium tendrán acceso a recursos técnicos como soporte, código y proyectos de ejemplo.

Aceleradores para ISVs e Integradores de Sistemas que les permitirán desarrollar y poner en producción aplicaciones más fácilmente y con bajo riesgo.

15 a 30% de descuento del precio.

Compromiso de estancia por 6 meses mínimo, después de este periodo los precios dejaran de ser con descuento.

2 versiones de paquetes

Development Accelerator Core: Horas de procesamiento para Windows Azure, almacenamiento, mensajes de .NET Services y consumo de anchos de banda por unidades base definidas para todos servicios)

Development Accelerator Extended: Development Accelerator Core + SQL Azure database.

Facilidad de cancelación dentro de los primeros 30 días y el cualquier momento después de los primeros 6 meses.

La versión CTP que está disponible actualmente sigue sin costo y para México la versión con soporte comercial estará disponible en Marzo del 2010.

Si estar interesado en desarrollo para Windows Azure participa en el proyecto de adopción temprana solicitando un ingreso con Omar Aviles
Para más información revisa el blog de Windows Azure

# data[].attributes.attachment_link.description
El día de hoy en el Worldwide Partner Conference 2009 se anunció el modelo de costo que tendrá Azure para poder comercializar una solución en la plataforma. Este modelo permite a los socios registrados en el Microsoft Partner Program (ahora Microsoft Partner Network) pagar solo los servicios que consuman.

# data[].attributes.body
Aquí tenemos un esquema de modelo que usa Azure, grandes empresas usan el servicio y no se preocupan por la infraestructura, redes, host, bases de datos, ya que Azure se encarga de esto.

# data[].attributes.body
En este vídeo nos daremos cuenta como trabaja, que es lo que nos ofrece Azure. También nos muestra las gráficas de tiempo y consumo muy bien explicado y porque debemos usar este modelo de negocio que cada día va creciendo para ahorrarnos dinero y tiempo.-

# data[].attributes.attachment_link.description
Microsoft Azure ofrece eficiencia de TI para empresas que necesitan almacenar información o hacer crecer sus aplicaciones, en una plataforma única, segura, flexible, escalable y de bajo costo. Entrega la posibilidad de respaldar tu información en distintos datacenters alrededor del mundo, pagando solo por lo que usas.

# data[].attributes.body
Azure es un conjunto de servicios ofrecidos por Microsoft para la creación de proyectos en la nube. Esto quiere decir que es en una serie de datacenters a lo largo del mundo y una API para desarrollar tus aplicaciones. Los servicios proporcionados son muy distintos: hosting de servicios y datos, un SQL Server, hospedaje de máquinas virtuales, caché de datos, un bus de servicio, servicios de autenticación, etc.

El mayor potencial de Azure es la capacidad de crear y borrar máquinas en cuestión de minutos, pudiendo ajustar así el coste de tu solución y eliminar el mantenimiento

# data[].attributes.body
2. Explique el modelo de negocios que usa Microsoft al apostare a la computación en la nube a través de AZURE.

# data[].attributes.headline
Lo que nos ofrece Visual Studio para Seguridad:

# data[].attributes.subject
Lo que nos ofrece Visual Studio para Seguridad:

# data[].attributes.body
En esta pagina nos explica bien que es lo que nos ofrece visual studio y ASPnet para llevar un mejor control y mantenimiento de la administración de roles y usuarios, como lo vimos en la practica la base de datos que se crea en la aplicación podemos llevar el control de los usuarios, roles y a que tienen permiso acceder, hasta auditoria y control de inicios y salidas de sesión.

# data[].attributes.attachment_link.readable_text
In this article

by Microsoft

Learn how to use the [Authorize] attribute to password protect particular pages in your MVC application. You learn how to use the Web Site Administration Tool to create and manage users and roles. You also learn how to configure where user account and role information is stored.

The goal of this tutorial is to explain how you can use Forms authentication to password protect the views in your ASP.NET MVC applications. You learn how to use the Web Site Administration Tool to create users and roles. You also learn how to prevent unauthorized users from invoking controller actions. Finally, you learn how to configure where user names and passwords are stored.

Using the Web Site Administration Tool

Before we do anything else, we should start by creating some users and roles. The easiest way to create new users and roles is to take advantage of the Visual Studio 2008 Web Site Administration Tool. You can launch this tool by selecting the menu option Project, ASP.NET Configuration. Alternatively, you can launch the Web Site Administration Tool by clicking the (somewhat scary) icon of the hammer hitting the world that appears at the top of the Solution Explorer window (see Figure 1).
Figure 1 - Launching the Web Site Administration Tool
Within the Web Site Administration Tool, you create new users and roles by selecting the Security tab. Click the Create user link to create a new user named Stephen (see Figure 2). Provide the Stephen user with any password that you want (for example, secret).
Figure 2 - Creating a new user
You create new roles by first enabling roles and defining one or more roles. Enable roles by clicking the Enable roles link. Next, create a role named Administrators by clicking the Create or Manage roles link (see Figure 3).
Figure 3 - Creating a new role
Finally, create a new user named Sally and associate Sally with the Administrators role by clicking the Create User link and selecting Administrators when creating Sally (see Figure 4).
Figure 4 - Adding a user to a role
When all is said and done, you should have two new users named Stephen and Sally. You should also have a new role named Administrators. Sally is a member of the Administrators role and Stephen is not.

Requiring Authorization

You can require a user to be authenticated before the user invokes a controller action by adding the [Authorize] attribute to the action. You can apply the [Authorize] attribute to an individual controller action or you can apply this attribute to an entire controller class.

For example, the controller in Listing 1 exposes an action named CompanySecrets(). Because this action is decorated with the [Authorize] attribute, this action cannot be invoked unless a user is authenticated.
Listing 1 - Controllers\HomeController.cs
using System.Web.Mvc; namespace MvcApplication1.Controllers { [HandleError] public class HomeController : Controller { public ActionResult Index() { return View(); } [Authorize] public ActionResult CompanySecrets() { return View(); } } }

If you invoke the CompanySecrets() action by entering the URL /Home/CompanySecrets in the address bar of your browser, and you are not an authenticated user, then you will be redirected to the Login view automatically (see Figure 5).
Figure 5 - The Login view
You can use the Login view to enter your user name and password. If you are not a registered user then you can click the register link to navigate to the Register view (see Figure 6). You can use the Register view to create a new user account.
Figure 6 - The Register view
After you successfully log in, you can see the CompanySecrets view (see Figure 7). By default, you will continue to be logged in until you close your browser window.
Figure 7 - The CompanySecrets view
Authorizing by User Name or User Role

You can use the [Authorize] attribute to restrict access to a controller action to a particular set of users or a particular set of user roles. For example, the modified Home controller in Listing 2 contains two new actions named StephenSecrets() and AdministratorSecrets().
Listing 2 - Controllers\HomeController.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Ajax; namespace MvcApplication1.Controllers { [HandleError] public class HomeController : Controller { public ActionResult Index() { return View(); } [Authorize] public ActionResult CompanySecrets() { return View(); } [Authorize(Users="Stephen")] public ActionResult StephenSecrets() { return View(); } [Authorize(Roles = "Administrators")] public ActionResult AdministratorSecrets() { return View(); } } }

Only a user with the user name Stephen can invoke the StephenSecrets() action. All other users get redirected to the Login view. The Users property accepts a comma separated list of user account names.

Only users in the Administrators role can invoke the AdministratorSecrets() action. For example, because Sally is a member of the Administrators group, she can invoke the AdministratorSecrets() action. All other users get redirected to the Login view. The Roles property accepts a comma separated list of role names.

Configuring Authentication

At this point, you might be wondering where the user account and role information is being stored. By default, the information is stored in a (RANU) SQL Express database named ASPNETDB.mdf located in your MVC application's App_Data folder. This database is generated by the ASP.NET framework automatically when you start using membership.

In order to see the ASPNETDB.mdf database in the Solution Explorer window, you first need to select the menu option Project, Show All Files.

Using the default SQL Express database is fine when developing an application. Most likely, however, you won't want to use the default ASPNETDB.mdf database for a production application. In that case, you can change where user account information is stored by completing the following two steps:

Add the Application Services database objects to your production database - Change your application connection string to point to your production database

The first step is to add all of the necessary database objects (tables and stored procedures) to your production database. The easiest way to add these objects to a new database is to take advantage of the ASP.NET SQL Server Setup Wizard (see Figure 8). You can launch this tool by opening the Visual Studio 2008 Command Prompt from the Microsoft Visual Studio 2008 program group and executing the following command from the command prompt:

aspnet_regsql
Figure 8 - The ASP.NET SQL Server Setup Wizard
The ASP.NET SQL Server Setup Wizard enables you to select a SQL Server database on your network and install all of the database objects required by the ASP.NET application services. The database server is not required to be located on your local machine.

Note

If you don't want to use the ASP.NET SQL Server Setup Wizard, then you can find SQL scripts for adding the application services database objects in the following folder:

C:\Windows\Microsoft.NET\Framework\v2.0.50727

After you create the necessary database objects, you need to modify the database connection used by your MVC application. Modify the ApplicationServices connection string in your web configuration (web.config) file so that it points to the production database. For example, the modified connection in Listing 3 points to a database named MyProductionDB (the original ApplicationServices connection string has been commented out).
Listing 3 - Web.config
<connectionStrings> <!--<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>--> <add name="ApplicationServices" connectionString="data source=localhost;Integrated Security=SSPI;Initial Catalog=MyProductionDB" /> </connectionStrings>

Configuring Database Permissions

If you use Integrated Security to connect to your database then you will need to add the correct Windows user account as a login to your database. The correct account depends on whether you are using the ASP.NET Development Server or Internet Information Services as your web server. The correct user account also depends on your operating system.

If you are using the ASP.NET Development Server (the default web server used by Visual Studio) then your application executes within the context of your Windows user account. In that case, you need to add your Windows user account as a database server login.

Alternatively, if you are using Internet Information Services then you need to add either the ASPNET account or the NT AUTHORITY/NETWORK SERVICE account as a database server login. If you are using Windows XP then add the ASPNET account as a login to your database. If you are using a more recent operating system, such as Windows Vista or Windows Server 2008, then add the NT AUTHORITY/NETWORK SERVICE account as the database login.

You can add a new user account to your database by using Microsoft SQL Server Management Studio (see Figure 9).
Figure 9 - Creating a new Microsoft SQL Server login
After you create the required login, you need to map the login to a database user with the right database roles. Double-click the login and select the User Mapping tab. Select one or more application services database roles. For example, in order to authenticate users, you need to enable the aspnet_Membership_BasicAccess database role. In order to create new users, you need to enable the aspnet_Membership_FullAccess database role (see Figure 10).
Figure 10 - Adding Application Services database roles
Summary

In this tutorial, you learned how to use Forms authentication when building an ASP.NET MVC application. First, you learned how to create new users and roles by taking advantage of the Web Site Administration Tool. Next, you learned how to use the [Authorize] attribute to prevent unauthorized users from invoking controller actions. Finally, you learned how to configure your MVC application to store user and role information in a production database.

# data[].attributes.attachment_link.title
Authenticating Users with Forms Authentication (C#)

# data[].attributes.attachment_link.description
In this article by Microsoft Learn how to use the [Authorize] attribute to password protect particular pages in your MVC application. You learn how to use the Web Site Administration Tool to create and manage users and roles. You also learn how to configure where user account and role information is stored.

# data[].attributes.attachment_link.readable_text
Hasta la versión 2012 de Visual Studio disponíamos de un acceso directo muy cómodo desde el propio entorno que nos permitía lanzar la herramienta de configuración de ASP.NET:

De esta manera abríamos la utilidad que nos permitía configurar la seguridad de la aplicación: usuarios, roles, proveedores para éstos, etc...

En Visual Studio 2013 y .NET 4.5 se ha dado preferencia a las bibliotecas de ASP.NET Identity en detrimento del clásico sistema de Membership. Por ello, aparte de basar las nuevas plantillas de proyecto en estas nuevas bibliotecas de autenticación y autorización, se ha retirado el acceso directo a la herramienta anterior (y no se proporciona tampoco una herramienta análoga para lo nuevo, debiendo recurrir a la implementación por defecto incluida en las plantillas).

Sin embargo, si necesitas (o prefieres) utilizar el antiguo sistema de autenticación y te interesa acceder a la herramienta, todavía puedes hacerlo, aunque no te resultará tan cómodo.

El acceso se basa en el mismo truco que ya expliqué hace unos cuantos años para poder usar la herramienta fuera de Visual Studio.

Básicamente debemos lanzar la aplicación de configuración en nuestro IIS, y luego acceder a ella indicando la ruta física de la aplicación a gestionar. Está explicado en el enlace anterior.

Lo lógico en nuestro equipo de desarrollo es que utilicemos IISExpress para lanzar la web de configuración, por lo que los pasos serían los siguientes:

1.- Vete a la carpeta en la que tengas instalado IISExpress (normalmente C:\Program Files (x86)\IIS Express\)

2.- La aplicación de configuración de ASP.NET está guardada en la carpeta " C:\Windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles". Así que debes lanzar la web de configuración de la siguiente manera:

iisexpress.exe /path:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles" /vpath:"/ASPNETConfig" /port:8080 /clr:4.0 /ntlm

Puedes poner lo que quieras en la ruta relativa (/vpath) y en el puerto, pero luego tienes que ser congruente cuando accedas a la herramienta, usando los mismos parámetros (ahora lo veremos). Yo en este caso he usado el puerto 8080.

Además se especifica el parámetro /ntlm para indicar que se debe aceptar autenticación del usuario local de Windows, ya que a esta herramienta pueden acceder los administradores locales de la máquina.

3.- Una vez lanzado IISExpress (verás una ventana de línea de comandos a la espera de comandos), podrás abrir tu navegador y acceder a la siguiente URL:

http://localhost:8080/ASPNETConfig/default.aspx?applicationPhysicalPath=[Ruta de tu app]

De este modo accedemos a la herramienta y le indicamos qué aplicación es la que queremos gestionar, indicando para ello su ruta física en disco.

Si tenemos el web.config correctamente configurado podremos acceder a la herramienta y empezar a configurar la seguridad.

Automatizando el proceso

Lo anterior está bien pero es un poco tedioso tener que hacerlo cada vez que queramos lanzar la herramienta. Por ello he preparado un sencillo archivo .bat para automatizarlo. El archivo consta solamente de dos líneas:

start http://localhost:8080/ASPNETConfig/default.aspx?applicationPhysicalPath=%CD%
"C:\Program Files (x86)\IIS Express\iisexpress.exe" /path:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles" /vpath:"/ASPNETConfig" /port:8080 /clr:4.0 /ntlm

Lo que hace es lanzar la URL de la herramienta de administración pasándole como parámetro la ruta actual (donde esté copiado el .bat). Posteriormente lanza IISExpress con la herramienta de configuración en el puerto 8080.

Lo hago justo a la inversa porque sino no funcionaría. El motivo es que cuando lanzamos IISExpress este bloquea la ejecución del resto del .bat por lo que tiene que ir siempre al final. Como el navegador generalmente espera unos cuantos segundos por la respuesta del servidor, funcionará bien la mayor parte de las veces. si no lo único que hay que hacer es refrescar el navegador que se abre y listo.

Copia el archivo .bat (406 bytes) a la carpeta raíz de tu aplicación web y lo único que tendrás que hacer es doble-clic sobre éste para lanzar la herramienta de configuración.

OJO: Si usas una plantilla de las nuevas con VS2013 no te funcionará porque éstas usan ASP.NET Identity por defecto. Usa una plantilla antigua de VS2012 (hay un nodo para ello en Visual Studio) o úsalo con una aplicación hecha con una versión anterior. Si no para configurar la seguridad deberás usar las páginas que proporcionan las nuevas plantillas.

¡Espero que te sea útil!

José Manuel Alarcón
Fundador y director de campusMVP.es, el proyecto de referencia en formación on-line para programadores en lengua española. Autor de varios libros y cientos de artículos. Galardonado como MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.
Descarga GRATIS mi último libro (no técnico):"Tres Monos, Diez Minutos".

# data[].attributes.attachment_link.title
Acceder a la herramienta de configuración de ASP.NET en Visual Studio 2013 - JASoft.org

# data[].attributes.attachment_link.description
Hasta la versión 2012 de Visual Studio disponíamos de un acceso directo muy cómodo desde el propio entorno que nos permitía lanzar la herramienta de configuración de ASP.NET: De esta manera abríamos la utilidad que nos permitía configurar la seguridad de la aplicación: usuarios, roles, proveedores para éstos, etc...

# data[].attributes.body
La seguridad de nuestra aplicación en ASP.net es esencial, el manejo de claves, sesiones, mas si se trata de aplicaciones que tratan de datos muy privados como estados de cuenta, direcciones, teléfonos, etc.

Para ello al momento de desarrollar aplicaciones web debemos tener encuentra lo siguiente:

1. La autenticacion: debemos separar áreas publicas y las privadas, usar pólizas de bloqueo, establecer
contraseñas expirables, usar Hash, no enviar contraseñas como texto plano a través de la red, restringir el acceso a recursos del sistema, se recomienda usar  Impersonatio.

2. Administración: Asegurarnos bien de las interfaces y permisos de la administración, usar cuentas de servicio
y de proceso separado con privilegios mínimos.

3.Información: Los secretos NO se debe almacenar si es posible, ni en código, hay que usar encriptacion,
es recomendable usar DPAPI de windows para manejar secretos.

Es recomendable no tener la información privada en cache, asegurarnos del canal (SSL, IPSec). y mucho menos
usar el HTTP-GET no enviar información por la url.

# data[].attributes.headline
Funcionamiento de la seguridad en ASP.NET

# data[].attributes.subject
Funcionamiento de la seguridad en ASP.NET

# data[].attributes.body
Actualización: noviembre 2007

La seguridad de los sitios Web es una cuestión de importancia fundamental, además de compleja, para los desarrolladores de sitios Web. La protección de un sitio requiere la elaboración cuidadosa de un plan; por consiguiente, los programadores y administradores de sitios Web deben comprender perfectamente las opciones para proteger los sitios.

ASP.NET funciona junto con Microsoft .NET Framework y Servicios de Microsoft Internet Information Server (IIS) para ayudar a proporcionar aplicaciones Web seguras. Para ayudar a proteger la seguridad de una aplicación ASP.NET, se deben llevar a cabo las dos funciones principales que se describen en la siguiente tabla.

Función de seguridadDescripción

Autenticación | Ayuda a comprobar que el usuario es precisamente quien dice ser. La aplicación obtiene las credenciales (diversas formas de identificación, como nombre y contraseña) de un usuario, y las valida consultando a una autoridad determinada. Si las credenciales son válidas, se considera a la entidad que ha enviado las credenciales como una entidad autenticada.

Autorización | Limita los derechos de acceso mediante la concesión o negación de permisos específicos a una identidad autenticada.

Además, Internet Information Services (IIS) puede conceder o negar el acceso en función de la dirección IP o del nombre de host del usuario. Cualquier autorización de acceso posterior se realiza mediante la autorización de la dirección URL del permiso de acceso al sistema de archivos NTFS.

Es importante entender cómo interactúan todos los diversos subsistemas de seguridad. Puesto que ASP.NET se basa en Microsoft .NET Framework, el desarrollador de aplicaciones ASP.NET también tiene acceso a todas las características de seguridad integradas de .NET Framework, como la seguridad de acceso a código y la seguridad de acceso basada en funciones. Para obtener más información sobre las funciones de seguridad de ASP.NET, vea Seguridad de acceso a código de ASP.NET.

https://msdn.microsoft.com/es-es/library/ks310b8y(v=vs.100).aspx

# data[].attributes.body
En cuanto a seguridad que aportes puntuales hace asp.net tanto a la aplicación como a su entorno.