Configurar el asp de inicio de sesión. Computadoras servidor para trabajar con cuentas de usuario. Iniciar sesión

“Mazal tov” es un saludo tradicional en bodas, cumpleaños y celebraciones judías de mayoría de edad: bar y bat mitzvá.

Su traducción literal es “buena felicidad”. Más a menudo se traduce simplemente como "buena suerte". Pero debe comprender que esta no es una palabra de despedida antes de un evento futuro, ni un deseo de buena suerte, por ejemplo, antes de un examen, sino una felicitación por algo logrado: aprobar un examen, casarse, etc.

En una traducción más flexible, la expresión se puede interpretar como "feliz destino" .

En hebreo, esta frase de felicitación, o bendición, proviene del idioma yiddish, en el que las dos palabras “mazal” y “tov” llegaron a usarse juntas como una expresión fija. Además, ambas palabras provienen originalmente del hebreo: mazal y mazel se traducen como suerte y felicidad, y la palabra "tov" es "bueno".

Como muchos elementos del idioma yiddish, las felicitaciones penetraron rápidamente en la cultura lingüística de otros pueblos. En el siglo XIX llegó a idioma en Inglés. La frase se ha encontrado en los diccionarios desde 1862. Además del inglés, dejó su huella en alemán, polaco y holandés. En alemán, gracias a esta integración lingüística, apareció la palabra Massel (mazzel en holandés) que significa “suerte”, y varias otras palabras.

Peculiaridades del uso de los deseos “Mazal tov”

En hebreo, las felicitaciones se escriben así: מזל טוב.

En la transcripción rusa se utilizan diferentes variantes: mazltov, mazltof, mazal tov y otras. No es del todo correcto utilizar “F” al final, porque se pronuncia “V”. En yiddish el acento recae en la primera sílaba, en hebreo moderno en la segunda. Sin embargo, ambas opciones de pronunciación son comunes.

En bodas judías “¡Mazel tov!” gritan después de que el novio aplasta el cristal con el talón, en memoria de la destrucción del Templo de Jerusalén.

Al felicitar a alguien por su cumpleaños, se acostumbra decir “¡Mazel tov y hasta 120!” Los judíos siempre se desean mutuamente vivir hasta los 120 años. El trasfondo de esta tradición judía, como la mayoría de las demás, se encuentra en las Sagradas Escrituras.

Dicen bendiciones en muchas otras ocasiones, especialmente en las fatídicas: al final de la escuela, la universidad o el servicio militar. Si un evento abre una nueva etapa en la vida, seguramente se celebrará con las palabras “¡Mazel tov!”

Ahora el deseo se ha difundido por todo el mundo y se ha vuelto, hasta cierto punto, internacional. Se utiliza en películas y televisión. En uno de los episodios de la serie "Interns", así lo pronuncia el jefe Bykov. Otro médico de la televisión, House, también lo utilizó. A menudo la expresión se utiliza como referencia a la cultura judía, es decir, como símbolo del judaísmo.

Cuando queremos felicitar a alguien decimos con un sentimiento especial: “¡Mazal tov!” ¿Qué significa “manchado”?

Para responder a esta pregunta, recurramos primero al calendario judío.

Como sabes, el calendario judío se basa en el ciclo lunar, aunque también tiene en cuenta el solar. Al igual que el gregoriano, que se basa en el ciclo solar, tiene 12 meses. Sabemos que cada detalle más pequeño del mundo tiene un significado profundo. Una vez el Baal Shem Tov dijo a sus discípulos: si el viento mueve una hoja, significa que es la voluntad de Di-s. Los alumnos no lo entendieron, pero al cabo de un rato vieron cómo una pequeña hoja, al girarse, cubría con su sombra a un gusano que moría al sol. Toda buena ama de casa no tiene cosas al azar, todo tiene su propósito y un lugar específico. Dios es el verdadero amo de este mundo, y cada detalle más pequeño con el que entramos en contacto no es accidental y tiene su propio significado especial, generalmente incluso varios. Por lo tanto, el alfabeto para los judíos no son solo letras: la tradición dice que son 22 herramientas con las que se construyó el mundo. El diseño especial de las 5 letras “finales”, “plafones”, contienen el secreto de Geula: nuestra liberación con la venida del Mashíaj. Tanto las vocales como, por supuesto, los números tienen un significado espiritual. No es casualidad que un año tenga 12 meses, ni más ni menos. ¿Con qué más está relacionado este número? 12 tribus de Israel. 12 del mediodía y 12 de la noche. 12 signos del Zodíaco...

Entonces, ¿qué es “mazal”? “Mazal” – “constelación”, “signo del zodíaco”, “planeta”, “mucho, destino, roca”, “felicidad, suerte”. Esta cadena de significados muestra claramente que están interconectados. "Mazal" proviene de la palabra hebrea "mozel" - fluir. A través de los mazal, constelaciones, signos del Zodíaco, la bendición Divina “fluye, se derrama”. Cuando vemos cómo a una persona todo le va bien, todo le sale bien y a otra no, no entendemos por qué sucede esto, los caminos de Dios nos son desconocidos. Pero al felicitar a alguien, nosotros, sin darnos cuenta, deseamos que Dios, a través del signo del zodíaco de esta persona, siempre le envíe "tov", "bueno", "bueno" - para ayudar y proteger.

Ahora otra pregunta: ¿existe una conexión entre mazal y las 12 de la tarde y las 12 de la noche? Comer. Como cada mes del año, cada hora tiene su propio mazal. El zodíaco se está moviendo. No entendemos cómo nos afecta, pero así es, eso seguro.

Hay una historia bien conocida que le sucedió al Alter Rebe cuando estaba en prisión. Una noche se le acercó un hombre. Vio que el Alter Rebe estaba despierto y preguntó por qué, ya que ya eran las 2 de la madrugada. El Alter Rebe lo corrigió y le dijo la hora exacta. El invitado de la noche se sorprendió mucho: ¿cómo sabía este judío en régimen de aislamiento la hora exacta sin reloj? El Rebe respondió que sabía cómo se mueven los planetas y que cada hora tiene su propio signo del Zodíaco.

Hay muchas leyes judías que deben seguirse en cierto tiempo. Y esta necesidad está relacionada con el Zodíaco. Cada negocio tiene su hora más favorable, la cual es determinada por Di-s. Estos son Sus “horarios de oficina” sobre varios “temas”. La vida del mundo se basa en el impronunciable Nombre sagrado de Di-s de cuatro letras, que consta de cuatro letras: dos "ey", "yod" y "vov". La reordenación de estas letras cambia la influencia de Di-s en Sus creaciones. Hay un total de 12 variantes del Nombre de Di-s de cuatro letras. Cada una de estas opciones está asociada a una hora, día y mes específicos. Y las 12 tribus de Israel también están asociadas con variantes del Nombre de Di-s, es decir, las cualidades que llevan dentro de sí, y con los signos del Zodíaco, y con los planetas. Todo está conectado con todo.

Hay meses más felices en el calendario judío, como Adar. Y los judíos siempre intentan posponer la solución de cuestiones complejas hasta este mes. El Tanaj nos habla de la feliz suerte de los judíos en Purim (pero recordamos lo que hicieron los judíos de Persia para que su suerte fuera así: oraron, se arrepintieron y ayunaron, lo que significa que nuestra participación en nuestro propio bienestar es inevitable). Hay meses menos afortunados, como Av, Jeshván, aunque se promete que en el futuro se convertirán en un tiempo de gran alegría: el 9 de Av nacerá Mashíaj, descendiente de David, y se construirá el tercer Templo. será consagrado en Jeshván.

O tomemos a Tishrei. Corresponde a la constelación de Libra (en este momento Dios juzga al mundo y determina su futuro), el planeta Venus (en la tradición judía Noga), que se asocia con el amor: es con amor con quien nos dirigimos a Dios, diciéndole primero sobre nuestro arrepentimiento, sobre el deseo de unirnos a Él, y desde mediados de mes, en la festividad de Sukkos, habiendo recibido ya una sentencia misericordiosa, nos regocijamos con gratitud porque la unificación con Di-s tuvo lugar: este es el momento de la mayor alegría del año), la tribu de Efraín, hijo de Yosef. Las letras del Nombre de Di-s de cuatro letras en este momento forman la palabra "veaya" - "y fue" o "y será". En el Tanaj, esta palabra siempre precede al bien, la felicidad. Todos en Tishrei deseamos esto de corazón para nosotros y para los demás. Por cierto, los signos del zodíaco nos dicen qué cualidades es mejor desarrollar, en qué momento y a qué influencias está expuesto el mundo.

En la antigüedad, los judíos conocían la astrología. En la Torá leemos que Abraham, en virtud de este conocimiento, sabía que él y Sara no debían tener hijos. Pero en su servicio a Dios, Abraham alcanzó tal nivel de perfección que su destino ya no estaba determinado por la unción, sino directamente por el Todopoderoso. La voluntad Divina es superior a los destinos zodiacales. En el capítulo Lech Lecho se dice sobre Abraham: “Y lo sacó”, es decir, nuestro antepasado pudo ver las estrellas no desde abajo, como de costumbre, sino desde arriba. Lo que se merecía, quizás para nosotros también. Por lo tanto, la tradición judía enseña: no hay mazal para un judío, él puede y debe estar por encima de esto.

Entonces, por un lado, vemos cuántos temas judíos “giran” en torno al Zodíaco. Por otro lado, sabemos que un judío no debe planificar su vida según un horóscopo (además, las personas que hoy elaboran horóscopos, sin duda, entienden poco de este asunto). Por un lado, una persona nace en un día y una hora determinados con determinadas cualidades dotadas por Dios, reflejadas en el signo del Zodíaco. Por otro lado, decimos que todo judío tiene la oportunidad de elevarse por encima de su mazal: a través de las oraciones, del cumplimiento de los mandamientos, de las buenas obras, de cambiar el “mazal” y llegar a Di-s. Todos los signos del zodíaco que influyen en una persona de forma habitual y natural. Pero hay tareas que se le plantean a una persona desde arriba, y se le da la fuerza para elevarse muy alto. Este es el camino del cambio radical.

Hay formas y correctivas. Por ejemplo, cuando, al experimentar problemas, una persona cambia de lugar de residencia o de trabajo, también cambia, quizás para mejor. Si una persona tiene una situación de salud o destino muy difícil, puede cambiar su nombre. Si algún judío no tiene un nombre judío, es una lástima. El nombre es el canal personal a través del cual una persona recibe el poder Divino.

Dios es misericordioso: todas las cosas buenas que están destinadas a nosotros son inmutables, pero las negativas pueden cambiarse mediante el arrepentimiento, las oraciones y las buenas obras. Toda la historia judía sirve como ejemplo de esto. Todo el mundo tiene la oportunidad de ascender más alto; a una persona siempre se le da esa oportunidad.

En cada momento, día y año de nuestra vida en la tierra, debemos comprender que no vivimos para perder este tiempo. El tiempo tiene mucho significado. En sentido figurado, este es el camino que sigue nuestra vida. Y nuestra tarea más elevada es elevarnos por encima del tiempo y el espacio, que son limitados, más cerca de Dios, como nuestros antepasados, como Moisés y David. Al mismo tiempo, debemos entender que un minuto, una hora, un día, un año son ciclos que se repiten, “escaleras de caracol”. diferentes escalas, por el cual estamos destinados a realizar un ascenso continuo (además, la parada en este movimiento no es fija: como para un coche que, cuando patina, se atasca, “resbalar” para nosotros es un movimiento descendente. En cada momento siguiente , hora, etc., nuestra actitud ante la vida tiene un nivel diferente y tenemos una exigencia diferente.

Cada año en ciertos meses celebramos las mismas fiestas, pero cada vez están llenas de nueva fuerza, que entra por el frotis. Si actúas con su ayuda, tu vida cambia. Pero una persona sólo se eleva si trabaja en sí misma y trata de mejorar su vida. La primera tarea del pueblo judío es servir a Di-s. A través de nuestras oraciones y acciones correctas recibimos un gran poder. Con su ayuda, el camino del mundo entero puede mejorarse. Y esta tarea nos ha sido confiada por Dios.

Vemos que los creyentes miran el horóscopo con escepticismo. Se presta mayor atención al estudio, la oración y las buenas obras. Y esto es correcto: no hay necesidad de perder el tiempo, es necesario ver la meta y esforzarse por alcanzarla con todas nuestras fuerzas.

Pasemos ahora a describir el proceso de autenticación directamente dentro del entorno ASP.NET, donde se proporcionan 3 tipos de autenticación para su elección:

*Autenticación de Windows
* Forma
* Pasaporte

Autenticación de Windows:

Como sugiere el nombre, este método se basa en el uso de contabilidad Entradas de Windows. Este método es apropiado si está creando una aplicación para una red local y todas las cuentas y grupos válidos están almacenados en un dominio predefinido. Sin embargo, debe tener mucho cuidado al asignar derechos de acceso a los usuarios, ya que también está asignando derechos para trabajar en Windows. Para configurar ASP.NET para que funcione en el modo de autenticación de Windows, debe cambiar el archivo de configuración del proyecto web Web.config o, si es necesario, archivo de configuración todo el servidor, ubicado en WINDOWS_FOLDERMicrosoft.NET

Versión de Framework.NETCONFIGMachine.config. En nuestro ejemplo, trabajaremos exclusivamente con el archivo del proyecto - Web.config, en el que necesita encontrar la sección de autenticación y configurar su atributo de modo en Windows:

Ahora puede proceder directamente a programar e implementar la autenticación basada en Windows. Para ayudarle, la clase WindowsIdentity está diseñada específicamente para trabajar con la autenticación de Windows. En general, para la autenticación basada en Windows, .NET Framework proporciona dos clases principales:

* GenericIdentity: solo implementa la interfaz IIdentity y no hace referencia a ningún tipo de autenticación específico
* WindowsIdentity: también es una implementación de la interfaz IIdentity, pero también incluye métodos específicos únicamente para la autenticación basada en Windows.

El nombre de usuario y el nombre del grupo se almacenan en el objeto WindowsIdentity en el siguiente formato: DOMAINUserName y DOMAINGroup, respectivamente. Las únicas excepciones son los grupos integrados, por ejemplo el grupo Administradores, para acceder a él puede utilizar la cadena de conexión a través de WindowsIdentity: BUILTINAdministrators. O puede especificar un grupo integrado de la enumeración System.Security.Principal.WindowsBuiltInRole.

De la Fig. 1 muestra que el objeto WindowsIdentity le permite obtener el nombre de usuario; determinar el tipo de autenticación; determinar si la autenticación se realizó de forma anónima; También puede averiguar si el usuario ha pasado la autenticación o no, si es un invitado o un usuario del sistema.


Arroz. 1 – Objeto de identidad de Windows

Porque en las aplicaciones ASP.NET, para acceder al objeto WindowsIdentity, necesitará crear la siguiente cadena:

HttpContext.Current.User.Identity, entonces también puede determinar a qué rol pertenece el usuario actual. Esto se puede lograr debido al hecho de que la propiedad Usuario en esta cadena implementa la interfaz Iprincipal, que le permite determinar si un usuario pertenece a un rol específico llamando a la función IsInRole, que tiene la siguiente sintaxis:

Función pública reemplazable IsInRole (rol ByVal como cadena) como miembro booleano de: System.Security.Principal.Iprincipal

Pero alejémonos por un momento de la pura teoría e intentemos implementar un ejemplo práctico. Para hacer esto, cree un nuevo proyecto de aplicación web ASP.NET e ingrese el siguiente código:
Predeterminado.aspx:

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="default.aspx.vb" Inherits="AuthSample.WebForm1"%> Muestra de autenticación



Predeterminado.aspx.vb:

La clase pública WebForm1 hereda System.Web.UI.Page #Región “Código generado por el Diseñador de formularios web” ‘Esta llamada es requerida por el Diseñador de formularios web. Private Sub InitializeComponent() End Sub 'NOTA: El Diseñador de formularios web requiere la siguiente declaración de marcador de posición.

'No lo elimines ni lo muevas. Diseñador privadoPlaceholderDeclaración como System.Object Private Sub Page_Init(ByVal remitente como System.Object, ByVal y como System.EventArgs) Maneja MyBase.Init 'CODEGEN: el diseñador de formularios web requiere esta llamada a método 'No lo modifique usando el editor de código .

” & _ “

InitializeComponent() End Sub #End Region Private Sub Page_Load(ByVal remitente como System.Object, ByVal e As System.EventArgs) Maneja MyBase.Load Dim s As String s = “ Nombre:

” & _ “

“ & HttpContext.Current.User.Identity.Nombre & “ Tipo de autenticación:

” & _ “

" & HttpContext.Current.User.Identity.AuthenticationType.ToString & " Está autenticado:

" & HttpContext.Current.User.Identity.IsAuthenticated.ToString & "

Es administrador:

“ & HttpContext.Current.User.IsInRole(“Administrador”).ToString & “
”Respuesta.Escritura(s) Fin Sub Fin Clase
Si se seleccionó el modo de autenticación de Windows y la configuración de IIS no causó ningún conflicto, recibirá la información adecuada sobre su usuario actual. Si los campos de nombre de usuario y tipo de autenticación están vacíos, entonces solo necesita configurar IIS, para ello siga estos pasos:


1. Abra IIS y busque el directorio virtual con esta aplicación.

Con esto concluye nuestra discusión sobre la autenticación basada en Windows y pasamos a la autenticación de formularios.

Autenticación de formulario:

La autenticación de formularios, o autenticación basada en cookies, como también se la llama, tiene una serie de ventajas sobre la autenticación de Windows.

* En primer lugar, tiene la oportunidad de determinar la apariencia del formulario de registro según su propio gusto y color o según el gusto y color del usuario en lugar del mismo tipo de ventana de registro de Windows.
* En segundo lugar, tienes control total sobre la información que ingresas.
* La información del usuario ahora se puede almacenar no solo en SAM o Active Directory, sino también en cualquier otro almacenamiento, en particular: una base de datos, un directorio LDAP, archivos XML o un archivo de texto sin formato.
* No es necesario vincular la política de seguridad del servidor con la política de la aplicación web, ya que, como se mencionó anteriormente, toda la información del usuario se puede colocar en un almacén de datos separado sin superposición con las cuentas del sistema operativo.

Pero a pesar de esta abundancia de opciones de autenticación basadas en formularios, existe una limitación importante: el usuario debe permitir el uso de cookies. Si no está allí, la autenticación de formulario mediante herramientas ASP.NET no funcionará. Preste atención a las palabras “...usando herramientas ASP.NET...”. Esto significa que el mecanismo que libera al desarrollador de las operaciones rutinarias de comprobaciones interminables no funcionará, es decir, todas las solicitudes recibidas de un usuario que aún no ha sido autenticado se redirigen a la página de registro, donde ingresa la información necesaria ( normalmente un nombre de usuario y contraseña). La información recibida se transfiere al entorno ASP.NET, donde se verifica. Si tiene éxito, se envía al usuario una cookie que contiene un ticket de autorización, un nombre de usuario y una clave para obtener posteriormente un identificador. Como resultado, todas las solicitudes posteriores del navegador contendrán información de autorización en los encabezados, que se envían al entorno ASP.NET para su verificación. Por lo tanto, si el usuario no admite cookies, todas las comprobaciones sobre si ha pasado la autenticación deberán realizarse manualmente; por ejemplo, en versiones anteriores de ASP, esto se hacía utilizando un objeto de sesión, aproximadamente de la siguiente forma:

Si no es sesión ("Registrado") = "1", entonces Response.Redirect ("login.asp") finaliza si

Para utilizar la autenticación de formulario, primero debe configurar la configuración del proyecto web. Para hacer esto, cambie el contenido de la etiqueta. archivo Web.config de la siguiente manera:

Echemos un vistazo más de cerca al código anterior. Atributo de modo de etiqueta define el método de autenticación. En los ejemplos anteriores usamos el valor de Windows, que configuró la autenticación en el modo de autenticación de Windows; ahora, para el trabajo basado en formularios, usamos el modo Formularios. Además de estas dos constantes, hay 2 más: Pasaporte y Ninguna: la primera define la autenticación basada en pasaporte, que se analizará más adelante, la segunda la desactiva por completo. Siguiente etiqueta ( ) es exclusivo de la autenticación basada en formularios e incluye la siguiente información:

* nombre – nombre del archivo cookie en el que se ingresarán los datos sobre la autenticación exitosa
* loginUrl – define la dirección de la página a la que se redirigirá al usuario para registrarse
* protección: acepta los valores Todo|Ninguno|Cifrado|Validación y determina cómo se protegen los datos en las cookies. De los valores aceptables queda claro que no se puede hacer nada con los datos recibidos y aceptarlos tal como están; puedes compararlos; se puede cifrar; y también es posible combinar la verificación con la criptografía; este valor se utiliza de forma predeterminada.
* tiempo de espera: define el período de tiempo en segundos durante el cual la cookie estará disponible
* ruta: este atributo especifica la ruta completa a la cookie. De forma predeterminada, contiene una barra diagonal (/), que expande todas las rutas. No se recomienda cambiar esta configuración porque algunos navegadores distinguen entre mayúsculas y minúsculas en la ruta, por lo que cambiar esta configuración puede impedir que algunos usuarios puedan autenticarse.
* requireSSL – este atributo toma el valor Verdadero o Falso (por defecto) y establece la necesidad de utilizar el protocolo de sockets seguros (SSL – Secured Sockets Layer)
* slideExpiration: especifica si la cookie y las credenciales deben regenerarse si expira el tiempo de espera. Acepta verdadero (predeterminado) o falso.

Todos los atributos posibles de la sección de formularios fueron descritos anteriormente, pero para que la aplicación funcione correctamente basta con utilizar solo 3 de ellos, como se muestra en el siguiente listado:

Autenticación de formulario utilizando archivos XML separados:

Ahora creemos una página de registro de usuario simple que verifique el nombre de usuario y la contraseña ingresados ​​​​con el archivo XML. Para hacer esto, primero cree un archivo XML llamado usuarios.xml similar al siguiente:
usuarios.xml:

John uno Micro dos Factura tres

La base de usuarios está lista; ahora puede comenzar a crear un proyecto de registro de usuarios de prueba. Todo el código necesario se proporciona a continuación:
Predeterminado.aspx:

<%@ Page Language=”vb” AutoEventWireup=”false” Codebehind=”default.aspx.vb” Inherits=”FormAuth._default”%> por defecto



Predeterminado.aspx.vb:

Importa System.Web.Security Clase pública _default Hereda System.Web.UI.Page #Región “Código generado por el Diseñador de formularios web” ‘Esta llamada es requerida por el Diseñador de formularios web. Private Sub InitializeComponent() End Sub 'NOTA: El Diseñador de formularios web requiere la siguiente declaración de marcador de posición.

'No lo elimines ni lo muevas.

<%@ Page Language=”vb” AutoEventWireup=”false” Codebehind=”login.aspx.vb” Inherits=”FormAuth.WebForm1”%> Diseñador privadoPlaceholderDeclaración como System.Object Private Sub Page_Init(ByVal remitente como System.Object, ByVal y como System.EventArgs) Maneja MyBase.Init 'CODEGEN: el diseñador de formularios web requiere esta llamada a método 'No lo modifique usando el editor de código .

InitializeComponent() End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Maneja MyBase.Load 'Coloque el código de usuario para inicializar la página aquí If context.Current.User.Identity.Name = “” Luego Response.Redirect(“login.aspx”) Si no Response.Write(“
”) Fin si Fin Sub Fin Clase

Registro



Nombre Private Sub InitializeComponent() End Sub 'NOTA: El Diseñador de formularios web requiere la siguiente declaración de marcador de posición.<>'No lo elimines ni lo muevas.

Diseñador privadoPlaceholderDeclaración como System.Object Private Sub Page_Init(ByVal remitente como System.Object, ByVal y como System.EventArgs) Maneja MyBase.Init 'CODEGEN: el diseñador de formularios web requiere esta llamada a método 'No lo modifique usando el editor de código .

InitializeComponent() End Sub #End Region Private Sub btnLogin_Click(ByVal sender As Object, ByVal e As EventArgs) Maneja btnLogin.Click Dim xd As New XmlDocument, xr As XmlNodeReader Dim sName As String, sPass As String "Abre el archivo XML xd. Load(Server.MapPath(“users.xml”)) ' Activar XmlNodeReader xr = New XmlNodeReader(xd.Item(“users”)) " Buscar el usuario deseado Mientras xr.Read Si xr.Name = “name” Y xr .NodeType = XmlNodeType.Element Then sName = xr.ReadString " Si el nombre de usuario es incorrecto, vaya a otro If sName

txtName.Text Entonces xr.Skip() ElseIf xr.Name = “contraseña” Y xr.NodeType = XmlNodeType.Element Entonces si xr.ReadString() = txtPassword.Text Entonces " Si las contraseñas coinciden, entonces la autenticación fue exitosa FormsAuthentication.RedirectFromLoginPage ( txtName.Text, True) De lo contrario " Si no, vaya a otro usuario xr.Skip() End If End If End While " Si se ejecuta esta línea, entonces la información del usuario se ingresó incorrectamente lbl.Visible = True End Sub End Clase

Realicemos ahora un "informe": el código anterior contiene 2 páginas. Todas las acciones comienzan en la página default.aspx, que verifica si el usuario actual tiene un nombre:

Si context.Current.User.Identity.Name = “” Entonces Response.Redirect(“login.aspx”) De lo contrario Response.Write(“


Hola " & contexto.Current.User.Identity.Name & "

Si se ha autenticado correctamente y ve el saludo, cierre la ventana del navegador e intente iniciar la página default.aspx nuevamente. Inmediatamente verá un saludo para el usuario cuyo nombre ingresó la última vez. El hecho es que durante el registro guardamos una cookie en la máquina del cliente. Esto sucedió en el momento en que llamamos a la función RedirectFromLoginPage en el código, pasándole a su parámetro CreatePersistentCookie el valor True:

FormsAuthentication.RedirectFromLoginPage(txtName.Text, Verdadero)

Para evitar que se envíe la cookie, simplemente llame a esta función con el parámetro CreatePersistentCookie establecido en False. O hay otra manera: en la página default.aspx, agregue un controlador de eventos de descarga de página con el siguiente código:

Subpágina privada_Unload (remitente ByVal como objeto, ByVal e como System.EventArgs) maneja MyBase.Unload FormsAuthentication.SignOut() End Sub

Como resultado, después de descargar la página principal, el usuario se registrará para salir.

Autenticación de formulario utilizando el archivo de configuración:

En el ejemplo anterior, almacenamos todos los datos del usuario en un archivo XML separado, pero resulta que ASP.NET brinda la capacidad de almacenar información de la cuenta directamente en el archivo de configuración del proyecto web. La ventaja de este método es que requiere mucho menos código para su implementación, ya que en este caso el programador no necesita escanear manualmente el archivo XML en busca de coincidencias; simplemente llama a una única función que resuelve todo el problema. Para comprender el principio de funcionamiento de este mecanismo, volvamos una vez más al archivo de configuración, o más bien a la etiqueta de formulario. Además de los atributos descritos anteriormente, esta etiqueta también puede incluir una sección — certificados:
Web.config:

Como puede verse en la lista anterior, la etiqueta de credenciales contiene un único atributo: formato de contraseña. Este parámetro determina cómo se almacena la contraseña y toma los siguientes valores:

* Borrar: la contraseña se guarda sin ningún cambio
* SHA1: la contraseña se codifica mediante el método SHA1 (Algoritmo Hash Seguro versión 1)
* MD5: la contraseña se codifica mediante el método MD5 (Message Digest versión 5)

Si elige uno de los algoritmos de hash, la contraseña ya no se puede almacenar en su forma original en el archivo de configuración; primero debe procesarse y solo luego asignar el resultado resultante al atributo de contraseña. De lo contrario, cuando ASP.NET se autentique, las contraseñas simplemente no coincidirán.

Ahora que tenemos una base de datos nueva de cuentas, volvamos a la aplicación anterior y cambiemos el código para el controlador de eventos de clic del botón de registro en la página login.aspx:
iniciar sesión.aspx.vb:

Private Sub btnLogin_Click(ByVal sender As Object, ByVal e As EventArgs) Maneja btnLogin.Click If FormsAuthentication.Authenticate(txtName.Text, txtPassword.Text) Entonces "Si el usuario se encuentra en la sección de certificados, entonces el registro fue exitoso ' FormsAuthentication. RedirectFromLoginPage( txtName.Text, False) De lo contrario, muestra un mensaje de error lbl.Visible = True End If End Sub

Ahora compare este código con el utilizado en el ejemplo anterior. Como puede ver, se ha reducido de muchas condiciones y búsquedas a una sola consulta que devuelve Verdadero o Falso.

No consideraremos específicamente un ejemplo de código que funcione con contraseñas hash en este momento, para no apresurar las cosas. El hecho es que en la tercera parte de este artículo, que estará dedicada a la criptografía, aprenderá sobre todas las complejidades del hash y el cifrado de datos y podrá poner estos métodos en práctica usted mismo.

Autenticación de formulario mediante base de datos:

Veamos ahora un ejemplo de cómo trabajar con otro almacenamiento de datos de usuario: la base de datos de MS SQL Server. La mayoría de los sitios dinámicos utilizan bases de datos para almacenar el contenido del sitio. La información sobre los usuarios tampoco es una excepción y bien puede ocupar su lugar en el conjunto de datos general. Para ver con nuestros propios ojos cómo sucede todo esto, creemos una aplicación de prueba, que nuevamente se basará en la página de registro que ya conocemos, utilizada en los ejemplos anteriores. En primer lugar, debe preparar la base de datos; para ello, abra la utilidad SQL Query Analyzer y ejecute el siguiente código escrito en tSQL:
FormularioAuthUsers.sql:

Cree la base de datos 'FormAuthUsers' y agregue la tabla 'Users' CREAR BASE DE DATOS FormAuthUsers IR UTILIZAR FormAuthUsers IR CREAR TABLA ( IDENTIDAD (1, 1) NO NULA, (50), (50), RESTRICCIÓN CLAVE PRIMARIA CLUSTERED () ON ) ON GO - Complete la tabla 'Usuarios' INSERT INTO Usuarios (Nombre de usuario, Contraseña) VALUES('John', 'one') GO INSERT INTO Usuarios (Nombre de usuario, Contraseña) VALUES('Mike', 'dos') GO INSERT INTO Usuarios (Nombre de usuario, Contraseña) ) VALUES('Bill', 'tres') GO --Crear procedimiento 'FindUser' CREAR PROCEDIMIENTO FindUser @Name nvarchar(50), @Password nvarchar(50) COMO SELECCIONAR COUNT(ID) DE Usuarios DONDE UserName = @Name AND Contraseña = @Contraseña IR

La ejecución de este código debería crear una base de datos en su servidor SQL llamada "FormAuthUsers" en la que puede encontrar una tabla de Usuarios con tres registros y un procedimiento almacenado FindUser. Este procedimiento devuelve el número de usuarios que satisfacen la solicitud, que se forma a partir de los parámetros pasados ​​a este procedimiento.

Ahora que tenemos la base de datos lista, podemos comenzar a crear la página que funcionará con ella. Para hacer esto, tome los ejemplos anteriores nuevamente y reemplace el controlador de eventos de clic de botón en la página login.aspx:
iniciar sesión.aspx.vb:

Importa System.Data.SqlClient Importa System.Web.Security Clase pública WebForm1 Hereda System.Web.UI.Page protegida con eventos txtName como System.Web.UI.WebControls.TextBox protegido con eventos txtContraseña como System.Web.UI.WebControls.TextBox protegido WithEvents lbl Como System.Web.UI.WebControls.Label Protegido WithEvents btnLogin Como System.Web.UI.WebControls.Button #Región “Código generado por el Diseñador de formularios web” 'Esta llamada es requerida por el Diseñador de formularios web. Private Sub InitializeComponent() End Sub 'NOTA: El Diseñador de formularios web requiere la siguiente declaración de marcador de posición.

'No lo elimines ni lo muevas.

Diseñador privadoPlaceholderDeclaración como System.Object Private Sub Page_Init(ByVal remitente como System.Object, ByVal y como System.EventArgs) Maneja MyBase.Init 'CODEGEN: el diseñador de formularios web requiere esta llamada a método 'No lo modifique usando el editor de código .

InitializeComponent() End Sub #End Region Private Sub btnLogin_Click(ByVal remitente como objeto, ByVal e como EventArgs) Maneja btnLogin.Click Dim cn como nueva SqlConnection(“server=localhost;database=FormAuthUsers;uid=sa;pwd=;”) Dim cm As New SqlCommand(“FindUser”, cn) Dim n As Integer " Abra la conexión Pruebe cn.Open() Catch ex As SqlException Response.Write(ex.Message) Salga de Sub End Try " Establezca el tipo de comando cm.CommandType = CommandType .StoredProcedure " Agregar parámetros de nombre Dim prmName = New SqlParameter(“@Name”, SqlDbType.NvarChar, 50) prmName.Value = txtName.Text cm.Parameters.Add(prmName) " Agregar parámetro de contraseña Dim prmPass = New SqlParameter( “@ Contraseña”, SqlDbType.NvarChar, 50) prmPass.Value = txtPassword.Text cm.Parameters.Add(prmPass) " Ejecutar la solicitud n = cm.ExecuteScalar Si n > 0 Entonces " Si se encontró a alguien, entonces el registro fue exitoso FormsAuthentication .RedirectFromLoginPage(txtName.Text, False) De lo contrario " si no hay nadie, entonces hay un error lbl.Visible = True End If cn.Close() End Sub End Class

Para que esta página funcione correctamente, asegúrese de que la cadena de conexión coincida con su configuración. Averigüemos qué está pasando aquí. Primero, se crea un objeto de conexión SqlConnection, pasando la cadena de conexión de la base de datos como parámetro:

Dim cn como nueva conexión Sql ("servidor = localhost; base de datos = FormAuthUsers; uid = sa; pwd =;")

Luego se configura el objeto SqlCommand para ejecutar el procedimiento almacenado y se preparan los parámetros para ejecutarlo. Para estas 7 líneas de código, existe, por supuesto, una alternativa de 1 línea de código:

cm.CommandText = "exec FindUser "" & txtName.Text & "", "" & txtPassword.Text & """

Pero, a pesar de que este código es más corto, el tiempo de ejecución será mayor. ¿Por qué? El caso es que con esta línea estás realizando una consulta operativa, es decir, estás escribiendo directamente un comando SQL que llama a un procedimiento almacenado. Como resultado, transfiere datos adicionales a través de la red en forma de un comando "ejecutivo", que a su vez ocupa espacio en el tráfico de la red; Tan pronto como esta solicitud llegue al servidor, primero se ejecutará el comando "exec" y solo entonces se iniciará el procedimiento almacenado FindUser que necesitamos. Alternativamente, existe una forma aún más difícil, que consiste en abandonar los procedimientos almacenados e insertar todo el código de consulta necesario directamente en el objeto SqlCommand, lo que da como resultado que se envíe aún más información adicional a través del tráfico de la red. Parecería que esto es más o menos un par de docenas de bytes, pero ¿qué pasa si tienes que trabajar con solicitudes enormes, cuyo código es mucho más grande que el de nuestro procedimiento? Por lo tanto, la mejor manera es utilizar procedimientos almacenados, ya que en este caso se obtiene una clara separación de funciones, en la que la página del cliente es responsable únicamente de la entrada y salida de datos en una forma accesible para el usuario; SQL Server realiza todas las operaciones de datos; e IIS actúa como intermediario entre el cliente y el servidor; aquí tienes una arquitectura de tres niveles. No cargue las máquinas cliente "delicadas" con trabajo innecesario; es mejor confiarlo a la artillería pesada, es decir, al servidor.

Pero volvamos a nuestro código y sigamos analizándolo: después de determinar el tipo de comando y preparar todos los parámetros, ejecutamos este comando de forma segura y observamos que para la ejecución se utiliza la función ExecuteScalar. Debe usarse cuando se recibe un valor escalar como resultado, es decir, un número, que es exactamente lo que sucede en nuestro procedimiento FindUser: devuelve el número de registros que satisfacen una condición dada:

Al final del código, habiendo recibido la cantidad de registros encontrados, simplemente analizamos este valor y realizamos las operaciones apropiadas.
Autenticación de formularios mediante servicios web:

Digamos que trabaja para la organización XYZ. Se le ha encomendado la tarea de crear una aplicación que administre la información del personal de su organización. Ha estado trabajando en este proyecto durante 7 meses y, de repente, por razones de seguridad, se le ha asignado la tarea de alojar la información del usuario en un servidor completamente diferente con el que otro departamento de la organización de XYZ está trabajando activamente. No se le proporcionó acceso directo al servidor, por lo que su proyecto no puede acceder directamente a la base de datos de usuarios ubicada en este servidor. Para resolver este problema, decidimos permitirle desarrollar un servicio web a través del cual podría controlar la autenticación del usuario.

Esta historia ficticia revela otra forma de realizar la autenticación: el uso de servicios web. Los servicios web se vuelven especialmente relevantes cuando usted o sus clientes no tienen acceso completo al servidor. Además, los servicios web no sólo son aplicables a aplicaciones web, sino que también pueden ser utilizados por productos de software que se ejecutan en una amplia variedad de plataformas. Esto fue posible gracias al uso de la tecnología SOAP (Protocolo simple de acceso a objetos), que utiliza puertos TCP/IP estándar y el protocolo HTTP.

Para trabajar con un servicio web, primero debe crearlo. Para hacer esto, inicie un nuevo proyecto de tipo Servicio web ASP.NET (Fig. 4).


Arroz. 4 – Crea un servicio web

Ahora, usando el código del controlador de eventos de clic del botón de registro del ejemplo anterior, péguelo en el código fuente del servicio web, modificándolo ligeramente al siguiente formulario:
AuthSrvc.asmx:

Importa System.Web.Services Importa System.Data.SqlClient _ Servicio de clase pública1 hereda System.Web.Services.WebService #Región " Código generado por el Diseñador de servicios web " Public Sub New() MyBase.New() "Esta llamada es requerida por el Diseñador de servicios web. InitializeComponent() "Agregue su propia inicialización código después de la llamada a InitializeComponent() End Sub "Requerido por el Diseñador de servicios web Componentes privados Como System.ComponentModel.IContainer "NOTA: El Diseñador de servicios web requiere el siguiente procedimiento "Se puede modificar utilizando el Diseñador de servicios web". No modificarlo usando el editor de código. Componentes Private Sub InitializeComponent() = New System.ComponentModel.Container() End Sub Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) "CODEGEN: Este procedimiento es requerido por el Diseñador de servicios web "No lo modifique usando el editor de código. Si se elimina Entonces si no (los componentes no son nada) Entonces componentes.Dispose() End If End If MyBase.Dispose(disposing) End Sub #End Region " Una función que verifica la presencia de un usuario con el nombre de usuario y la contraseña especificados

Autenticación de función pública (nombre de usuario de ByVal como cadena, contraseña de ByVal como cadena, mensaje de error ByRef como cadena) como booleano Dim cn como nueva SqlConnection("server=localhost;database=FormAuthUsers;uid=sa;pwd=;") Dim cm como nuevo SqlCommand ("FindUser", cn) Dim n As Integer " Abra la conexión Pruebe cn.Open() Catch ex As SqlException " Si hay una excepción, pase su descripción al parámetro ErrMessage ErrMessage = ex.Message Salir de la función End Try " Establezca el tipo de comando cm CommandType = CommandType.StoredProcedure " Agregar parámetros de nombre Dim prmName = New SqlParameter("@Name", SqlDbType.NVarChar, 50) prmName.Value = UserName cm.Parameters.Add(prmName) " Agregar parámetro de contraseña Dim. prmPass = New SqlParameter(" @Password", SqlDbType.NVarChar, 50) prmPass.Value = Contraseña cm.Parameters.Add(prmPass) " Ejecutar la solicitud n = cm.ExecuteScalar " Cerrar la conexión cn.Close() " Analizar el resultado Si n > 0 Entonces "Si se encontró a alguien, significa que el registro fue exitoso Devolver Verdadero De lo contrario" si no hay nadie allí, entonces hay un error Devolver Falso Fin Si Fin Función Fin Clase

Puede comprobar la funcionalidad del servicio sin salir de la caja registradora, para ello simplemente ejecútelo en el entorno Visual Studio .NET; Si no hubo errores en el servicio, verá una pantalla frente a usted con 2 hipervínculos. Uno de ellos conduce a una descripción de un servicio web utilizando WSDL (Lenguaje de descripción de servicios web), y el otro (Authenticate) permite probar el servicio. Haga clic en el segundo hipervínculo y complete la tabla de parámetros en la página que aparece (Fig. 5). Si ingresa la cadena "John" en el campo Nombre de usuario y sustituye "uno" por la contraseña, la función devolverá Verdadero: http://localhost/AuthSrvc/AuthSrvc.asmx/Authenticate:

verdadero

Creo que no tiene sentido analizar en detalle el código de esta función, porque en muchos aspectos es similar a su predecesora del ejemplo anterior. Pero, aun así, debes prestar especial atención al controlador de excepciones. Si en el listado con la base de datos simplemente mostró el mensaje correspondiente en la pantalla cuando ocurrió alguna excepción, entonces en el servicio web pasamos el mensaje de error al parámetro ErrMessage de la función Autenticar, que fue declarado por referencia :.

" Abra la conexión Pruebe cn.Open() Catch ex As SqlException " Si hay una excepción, pase su descripción al parámetro ErrMessage ErrMessage = ex.Message Salir de la función Finalizar intento

En las aplicaciones que utilizarán este servicio, incorporaremos una verificación de excepciones y, si se encuentran, mostraremos un mensaje apropiado.


Arroz. 5 – Comprobación de la funcionalidad del servicio web

Ahora creemos una aplicación que utilizará este servicio web, pero esta vez nos saldremos un poco del tema y crearemos una aplicación de Windows para variar:

1. Cree un nuevo proyecto de tipo Aplicación de Windows
2. Cambie la forma para que se parezca a la forma que se muestra en la fig. 6, o simplemente puede sustituir el código en el constructor del siguiente listado.
3. En la ventana SolutionExplorer, haga clic derecho en la carpeta Referencias y seleccione Agregar referencia web... en el menú contextual que aparece.
4. Verá un cuadro de diálogo para configurar enlaces a servicios web. Ingrese la dirección completa del archivo .asmx en el campo URL y ejecute una búsqueda. Como resultado, debería ver algo similar a la Figura 7.
5. Haga clic en el botón Agregar referencia y aparecerá un enlace al servicio web especificado en su proyecto.
6.


Arroz. 6 – Ejemplo de aplicación de prueba
Arroz. 7 – Resultados de búsqueda de servicios web

Ahora puede comenzar a escribir el código del programa que implementa este servicio web. Todo el código necesario se proporciona a continuación:
AuthSrvcRelease.vb:

La clase pública Form1 hereda System.Windows.Forms.Form #Región "Código generado por el Diseñador de formularios de Windows" Public Sub New() MyBase.New() "Esta llamada es requerida por el Diseñador de formularios de Windows. InitializeComponent() "Agrega cualquier inicialización después del InitializeComponent() llama a End Sub "El formulario anula la eliminación para limpiar la lista de componentes. Las sobrecargas protegidas anulan la eliminación secundaria (ByVal elimina como booleano) Si se elimina Entonces si no (los componentes no son nada) Entonces componentes.Dispose() End If End If MyBase. Dispose (eliminación) End Sub "Requerido por el Diseñador de formularios de Windows Componentes privados Como System.ComponentModel.IContainer "NOTA: El Diseñador de formularios de Windows requiere el siguiente procedimiento "Se puede modificar utilizando el Diseñador de formularios de Windows. Private Sub InitializeComponent() Me.Label1 = Nuevo System.Windows.Forms.Label Me.Label2 = Nuevo System.Windows.Forms.Label Me.txtName = Nuevo System.Windows.Forms.TextBox Me.txtPassword = Nuevo System.Windows. Forms.TextBox Me.cmdExit = Nuevo System.Windows.Forms.Button Me.cmdLogin = Nuevo System.Windows.Forms.Button Me.SuspendLayout() " "Label1 " Me.Label1.Location = Nuevo System.Drawing.Point(8 , 8) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(40, 16) Me.Label1.TabIndex = 0 Me.Label1.Text = "Nombre:" " "Label2" Me.Label2.Location = Nuevo System.Drawing.Point(8, 40) Me.Label2.Name = "Etiqueta2" Me.Label2.Size = Nuevo System.Drawing.Size(64, 16) Me.Label2.TabIndex = 1 Me.Label2.Text = "Contraseña:" " "txtName" Me.txtName.Location = Nuevo System.Drawing.Point(80, 5) Me.txtName.Name = "txtName" Me.txtName.Size = Nuevo System.Drawing .Size(216, 20) Me.txtName.TabIndex = 2 Me.txtName.Text = "" " "txtPassword " Me.txtPassword.Location = Nuevo System.Drawing.Point(80, 37) Me.txtPassword.Name = " txtPassword" Me.txtPassword.PasswordChar = Microsoft.VisualBasic.ChrW(42) Me.txtPassword.Size = Nuevo System.Drawing.Size(216, 20) Me.txtPassword.TabIndex = 3 Me.txtPassword.Text = "" " " cmdExit " Me.cmdExit.DialogResult = System.Windows.Forms.DialogResult.Cancel Me.cmdExit.Location = Nuevo System.Drawing.Point(216, 72) Me.cmdExit.Name = "cmdExit" Me.cmdExit.Size = Nuevo System.Drawing.Size(80, 24) Me.cmdExit.TabIndex = 4 Me.cmdExit.Text = "Salir" " "cmdLogin " Me.cmdLogin.Location = Nuevo System.Drawing.Point(128, 72) Me.cmdLogin .Name = "cmdLogin" Me.cmdLogin.Size = Nuevo System.Drawing.Size(80, 24) Me.cmdLogin.TabIndex = 5 Me.cmdLogin.Text = "Iniciar sesión" " "Form1" Me.AcceptButton = Me.cmdLogin Me.AutoScaleBaseSize = Nuevo System.Drawing.Size(5, 13) Me.CancelButton = Me.cmdExit Me.ClientSize = Nuevo System.Drawing.Size(304, 103) Me.Controls.Add(Me.cmdLogin) Me.Controls .Add(Me.cmdExit) Me.Controls.Add(Me.txtPassword) Me.Controls.Add(Me.txtName) Me.Controls.Add(Me.Label2) Me.Controls.Add(Me.Label1) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog Me.MaximizeBox = False Me.MinimizeBox = False Me.Name = "Form1" Me.Text = "Aplicación de prueba AuthSrvc" Me.ResumeLayout(False) End Sub #End Region Private Sub cmdLogin_Click (Remitente ByVal como System.Object, ByVal y como System.EventArgs) Maneja cmdLogin.Click " Establecer una referencia al objeto Dim au As New localhost.Service1 Dim sErr As String, bln As Boolean " Check Cursor = Cursors. WaitCursor bln = au.Authenticate(txtName.Text, txtPassword.Text, sErr) Cursor = Cursors.Default " - Pero primero, tengamos en cuenta posibles excepciones Si sErr<>"No lo modifique usando el editor de código. Amigo WithEvents Label1 As System.Windows.Forms.Label Amigo WithEvents Label2 As System.Windows.Forms.Label Amigo WithEvents txtName As System.Windows.Forms.TextBox Amigo WithEvents txtPassword As System.Windows .Forms.TextBox Amigo WithEvents cmdSalir como System.Windows.Forms.Button Amigo WithEvents cmdIniciar sesión como System.Windows.Forms.Button

"" Then MsgBox(sErr) Exit Sub End If " - Ahora pasemos a la verificación principal If bln = True Then MsgBox("Hello " & txtName.Text, MsgBoxStyle.Information) Else MsgBox("¡Datos incorrectos!", MsgBoxStyle .Exclamación) End If End Sub Private Sub cmdExit_Click(ByVal remitente como System.Object, ByVal e As System.EventArgs) Maneja cmdExit.Click End End Sub End Class

En este ejemplo puedes ver un código muy simple, que consiste en una simple llamada a función que realiza todas las operaciones necesarias.
Como se mencionó anteriormente, los servicios web se basan en tecnología SOAP y, por lo tanto, pueden ser utilizados por aplicaciones que se ejecutan en una plataforma completamente diferente. No iremos demasiado lejos al abandonar Windows, pero intentaremos llamar al mismo servicio web sin utilizar tecnologías .NET, es decir, directamente a través de SOAP. Para hacer esto, cree el siguiente archivo de secuencia de comandos en Visual Basic Script Edition (VBScript) y ejecútelo:

SOAP.vbs:

Como puede ver, al utilizar el modelo de objetos SOAP, puede acceder a servicios web utilizando una amplia variedad de lenguajes de programación (¡incluso scripts!) y plataformas.

Pero no todo es tan perfecto como parece. Debajo de la hermosa envoltura de los servicios web se esconden peligros, en primer lugar, su propia seguridad. Los servicios web tienen una estructura XML segura, que puede interceptarse y los datos que se transmiten pueden entenderse y recuperarse fácilmente. Para eliminar, o más bien reducir la probabilidad de que se produzca dicha filtración de información, es necesario proteger los servicios web. Existen diversas tecnologías para estos fines, pero sólo tres de ellas son las más comunes: reglas de firewall, Secure Sockets Layer (SSL) y Virtual Private Network (VPN).

Si sabe exactamente qué computadoras accederán a su servicio web, entonces, en este caso, la opción de usar reglas de Firewall le conviene, donde puede establecer restricciones y derechos para direcciones IP específicas, por lo que este método es más aplicable para redes locales, donde No tiene que preocuparse demasiado por la confidencialidad de la información transmitida. Una herramienta muy conveniente para esto es Microsoft Security and Acceleration (ISA) Server. Ofrece reglas de políticas avanzadas que le permiten restringir o, por el contrario, abrir el acceso a la información para clientes específicos.

SSL es más adecuado para redes de Internet. Al usarlo, los datos se cifran y se transfieren entre el servidor y el cliente; Luego, los datos recibidos se autentican, comprobando así si provienen de la fuente correcta. Esto sucede con el uso de certificados, que deben estar en posesión tanto del servidor como del cliente, por lo que, por un lado, el uso de certificados permite asegurarse de que los datos caigan en las manos adecuadas, pero, por otro lado, debe asegurarse de que el destinatario tenga el certificado adecuado. Entonces, para usar SSL necesitas:

1. Obtener certificados: los certificados son comerciales y de prueba. La diferencia entre ellos es que uno comercial se registrará oficialmente a nombre del comprador y, en consecuencia, costará dinero, mientras que uno de prueba se podrá obtener de forma gratuita, pero sin registro oficial. El certificado se puede obtener en la siguiente dirección: http://www.verisign.com/. Pero no importa qué tipo de certificado solicite, igual necesitará descargar 2: uno para el servidor y el otro para los clientes (también se llama Autoridad de certificación (CA)).
2. Configure el servidor e instale certificados en los navegadores del cliente: a continuación, para autenticar correctamente las solicitudes SSL, debe agregar certificados tanto en el servidor como en las máquinas del cliente. Además, los certificados de cliente no están destinados a la computadora, sino al navegador, es decir, si el usuario utiliza tanto Internet Explorer como Netscape, es recomendable emitirle certificados para ambos navegadores. Sin embargo, los certificados de servidor también están destinados a diferentes tipos de servidores (en Verisign puede encontrar certificados para más de 50 tipos de servidores), pero la única diferencia es que, por regla general, no se modifican, a menos que se instale una nueva versión. .

NOTA

Pero, a pesar de la falta de registro oficial, el certificado de prueba es legal.

VPN es una extensión de una red local basada en el uso de una red global, en particular Internet. Por ejemplo, un usuario que trabaja en una máquina remota puede conectarse a una red local a través de VPN mientras utiliza Internet. Con esta tecnología, puedes enviar datos entre computadoras a través de una conexión segura porque una VPN tiene las mismas características de seguridad que una red local. Una de las desventajas de una VPN es la necesidad de una conexión prolongada para funcionar de forma eficaz. Para la comunicación, VPN funciona con los siguientes protocolos: Protocolo de túnel punto a punto de Microsoft (PPTP), incluido con Windows NT 4.0 y Windows 2000, o Protocolo de túnel de capa dos (L2TP), disponible en Windows 2000.
NOTA

La lista de sistemas operativos relevantes muestra sólo aquellos a partir de cuyas versiones estos protocolos estuvieron disponibles, es decir, estos sistemas operativos también deberían incluir versiones posteriores, por ejemplo, Windows XP, Windows 2003 Server.

Los servicios web y su seguridad son temas muy interesantes y relevantes, dado que la popularidad de los servicios web se ha disparado con la llegada de .NET Framework y VS.NET. Pero no entraremos en más detalles, sino que volveremos a la corriente principal de este artículo. Usted mismo puede dominar fácilmente todas estas tecnologías. Para ello sólo necesitas un poco de ganas, paciencia y tiempo libre. Sólo puedo darte notas guía que pueden guiarte por el camino correcto:

* http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/default.asp
* http://www.microsoft.com/isaserver
* http://support.microsoft.com/default.aspx?scid=kb;EN-US;q307267
* http://www.w3.org/TR/wsdl.html
* http://www.w3.org/TR/SOAP/

Autenticación de pasaporte:

Passport es un sistema de inicio de sesión único creado por Microsoft y se puede utilizar en cualquier sitio web que sea miembro de esta promoción. Una ventaja importante de esta tecnología es que el usuario no necesita recordar los datos de registro de cada sitio por separado, lo que suele ocurrir cuando la cuenta a la que está acostumbrado ya está ocupada en un determinado sitio web. Passport te permite solucionar este problema porque utiliza una base de datos común de usuarios, por lo que en los sitios que soportan .NET Passport siempre ingresarás los mismos datos de registro: tu correo electrónico y contraseña.

El método de autenticación basado en Passport utiliza tecnologías web estándar para facilitar el uso y brindar privacidad:

* protocolo SSL seguro
*galletas
* JavaScript 1.2
* Cifrado 3DES

Para aprovechar todo el poder de su pasaporte, debe seguir estos pasos:

1. Descargue el SDK de pasaporte .NET desde la siguiente dirección: http://msdn.microsoft.com/library/default.asp?url=/downloads/list/websrvpass.asp

2. Después de esto, debe registrar su sitio con el servicio .NET Passport: http://go.microsoft.com/fwlink/?LinkID=9732. Si no se registra, sus opciones serán extremadamente limitadas y no podrá obtener completamente el resultado esperado; por ejemplo, para cerrar sesión (es decir, cerrar sesión) tendrá que cerrar todas las ventanas del navegador y luego eliminar todos los archivos de cookies. con datos de pasaporte

Al igual que cuando se utilizan otros tipos de autenticación, primero debe configurar un archivo de configuración del proyecto. La siguiente lista demuestra el contenido básico de la sección de autenticación del archivo de configuración:

En este código, configuramos el tipo de autenticación del pasaporte, después de lo cual configuramos un único parámetro que configura la autenticación del pasaporte: la dirección de la página a la que se redirigirá al usuario si surge la necesidad de registrarse:

Otra característica que une todos los tipos de autenticación es la interfaz IIdendity, a partir de la cual se crearon todas las clases de información del usuario para varios tipos de autenticación. La autenticación de pasaporte tampoco es una excepción a esta lista, y la herramienta que implementa todas las propiedades principales es el objeto System.Web.Security.PassportIdentity de .NET Framework.

Para indicar un enlace a la página de registro, se acostumbra utilizar un logotipo especializado que se descarga a través de Internet. Debido a que este logotipo tiende a usarse con bastante frecuencia, es mejor crear un control separado que implemente el componente de autenticación. Para hacer esto, siga estos pasos:

1. Cree un nuevo proyecto de tipo Aplicación web ASP.NET en VS.NET
2. Agregue un control de usuario web y asígnele el nombre pasaporte.ascx.
3. Reemplace su código fuente con lo siguiente:

pasaporte.ascx.vb:

Importa System.Web.Security Pasaporte de clase pública Hereda System.Web.UI.UserControl #Región "Código generado por el Diseñador de formularios web" "El Diseñador de formularios web requiere esta llamada. Private Sub InitializeComponent() End Sub "NOTA: El Diseñador de formularios web requiere la siguiente declaración de marcador de posición. "No la elimine ni la mueva.<%@ Page Language="vb" AutoEventWireup="false" Codebehind="login.aspx.vb" Inherits="PassAuth.WebForm1"%> <%@ Register TagName="passport" TagPrefix="ctl" src="passport.ascx"%> Diseñador privadoPlaceholderDeclaración como System.Object Private Sub Page_Init(ByVal remitente como System.Object, ByVal y como System.EventArgs) Maneja MyBase.Init "CODEGEN: el diseñador de formularios web requiere esta llamada a método "No lo modifique usando el editor de código .



InitializeComponent() End Sub #End Region Private Sub Page_Load(ByVal remitente como System.Object, ByVal e As System.EventArgs) Maneja MyBase.Load Dim id como PassportIdentity "Obtiene datos sobre el ID de usuario actual = CType(context.User.Identity , PassportIdentity) " Muestra el botón de registro Response.Write(id.LogoTag()) End Sub End Class 1. Después de eso, cambie el nombre de la página del proyecto web a login.aspx e ingrese el siguiente código de estructura de página: login.aspx :

AccesoTodas las acciones básicas para la autenticación del usuario las realiza el objeto PassportIdentity, o más bien el servicio Microsoft Passport, al que accede .NET Framework mediante el objeto PassportIdentity. Es por eso que todo lo que tienes que hacer es cosechar los beneficios, pero para saber exactamente qué puedes y debes cosechar, consulta la Tabla 1, que explica todos los posibles atributos que describen al usuario registrado.
Nombre del atributoDescripción
Accesibilidad
Determina si se deben permitir opciones de accesibilidad para un determinadousuario en todos los sitios miembros de Microsoft Passport
BDay_precisionDetermina la precisión del atributo Fecha de nacimiento.
Fecha de nacimiento
Contiene la fecha o año de nacimiento del usuario, según el valor.Atributo BDay_precision
Ciudad
GeoID que almacena información de ubicaciónCódigo de país de usuario ISO 3166
DirectorioAún no en uso
Nombre de pilaNombre de usuario
BanderasContiene opciones de perfil de usuario.
GéneroDetermina el género del usuario.
Idioma_PreferenciaLCID del idioma nacional del usuario
ApellidoApellido del usuario
ID de miembroAltoIdentificador de usuario único de alto nivel PUID
ID de miembroBajoIdentificador de usuario único de bajo nivel PUID
Nombre de miembroContiene el nombre de usuario y el nombre de dominio separados por un signo “@”
ApodoFácil de usar
OcupaciónContiene información adicional sobre el usuario, en
en particular, tipo de actividad
Código PostalCódigo postal del usuario en EE.UU. o en otro país
Correo electrónico preferidoDirección de correo electrónico del usuario
Versión del perfilVersión del perfil de usuario
RegiónGeoID que indica el lugar de residencia del usuario en
país
Zona horariaDetermina la zona horaria en la que reside el usuario.
BilleteraDetermina si el usuario almacena el pasaporte en
billetera

Mesa 1 – Opciones de perfil de usuario

Hay dos formas de acceder a todos estos atributos: el método GetProfileObject del objeto PassportIdentity y mediante la propiedad Item del mismo objeto. La siguiente lista, escrita en C#, demuestra ambos métodos en acción:
predeterminado.aspx.cs:

utilizando System.Web.Security; ... privado vacío Page_Load(remitente del objeto, System.EventArgs e) ( PassportIdentity id; id = (PassportIdentity)User.Identity; Response.Write(id["Firstname"] + "
"); Response.Write(id.GetProfileObject("Apellido") + "
"); }

Ahora volvamos a nuestro proyecto con el control passport.ascx y terminemos la página de registro. Para hacer esto, modifique los archivos login.aspx y login.aspx.vb de la siguiente manera:
iniciar sesión.aspx:

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="login.aspx.vb" Inherits="PassAuth.WebForm1"%> <%@ Register TagName="passport" TagPrefix="ctl" src="passport.ascx"%> Diseñador privadoPlaceholderDeclaración como System.Object Private Sub Page_Init(ByVal remitente como System.Object, ByVal y como System.EventArgs) Maneja MyBase.Init "CODEGEN: el diseñador de formularios web requiere esta llamada a método "No lo modifique usando el editor de código .

Por favor inicia sesión...

PUIDO:
Nombre de pila:
Apellido:
Correo electrónico:


Como usted sabe, la mayoría de los sitios tienen el mismo tipo de diseño de página generalmente aceptado, una parte integral del cual es el encabezado y el pie de página y, tal vez...

Autenticación de formularios

La autenticación de formularios es un sistema de autenticación de propósito general basado en dos conceptos. El primero es página de inicio de sesión, que puede verificar la validez de los usuarios (normalmente comprobando la combinación de nombre de usuario y contraseña con una base de datos u otro almacén de datos). El segundo es un mecanismo para preservar y restaurar el contexto de seguridad en cada solicitud (generalmente usando una cookie). De esta forma, el usuario sólo necesitará iniciar sesión una vez.

Como mostraremos más adelante, ASP.NET incluye toda la infraestructura necesaria. A través de la autenticación de formularios, ASP.NET crea una cookie de seguridad para los usuarios registrados, les sirve y mantiene automáticamente el contexto de seguridad para solicitudes posteriores. Lo mejor de todo es que gestiona este proceso de manera eficiente y es altamente resistente a falsificaciones.

La autenticación de formularios se basa en tickets (también llamados tokens). Esto significa que cuando un usuario se registra, recibe el llamado ticket con información básica sobre sí mismo. La información se almacena en una cookie cifrada que se adjunta a la respuesta para que se envíe automáticamente en cada solicitud posterior.

Cuando un usuario solicita una página ASP.NET a la que no pueden acceder usuarios anónimos, el tiempo de ejecución de ASP.NET comprueba si hay presente un ticket de autenticación de formularios. De lo contrario, se le redirigirá automáticamente a la página de inicio de sesión. A partir de este momento comienzan tus preocupaciones. Debe crear esta página de inicio de sesión y verificar la identidad del usuario dentro de ella. Si el usuario se autentica exitosamente, simplemente notifique al marco ASP.NET que la operación fue exitosa (llamando al método de clase FormsAuthentication) y el tiempo de ejecución establecerá automáticamente una cookie de autenticación (que en realidad contiene el ticket) y redirigirá al usuario. a la página que solicitaron. Con esta solicitud, el tiempo de ejecución determina que la cookie de autenticación del ticket está presente y permite el acceso a la página.

Este proceso se muestra en la siguiente figura. Todo lo que necesita hacer es configurar la autenticación de formularios en el archivo web.config, crear una página de inicio de sesión y verificar la identidad del usuario dentro de ella.

¿Por qué utilizar la autenticación de formularios?

La autenticación de formularios es una opción atractiva para los desarrolladores por varias razones, que se enumeran a continuación:

    Obtienes control total sobre el código de autenticación.

    Obtienes control total sobre la apariencia del formulario de inicio de sesión.

    Funciona con cualquier navegador.

    Le permite elegir cómo se almacena la información del usuario.

Todas estas razones se analizan con más detalle en secciones posteriores.

Control sobre el código de autenticación

Debido a que la autenticación de formularios se implementa completamente dentro de ASP.NET, usted tiene control total sobre cómo se realiza la autenticación. No es necesario depender de ningún sistema externo como es el caso de la autenticación de Windows. El comportamiento de la autenticación de formularios se puede personalizar para adaptarlo a sus necesidades.

Controlar la apariencia del formulario de inicio de sesión

Tiene el mismo grado de control sobre la apariencia de la autenticación de formularios que sobre su funcionalidad. En otras palabras, la página de inicio de sesión se puede diseñar como desee. Sin embargo, si no desea hacer esto, puede utilizar la API de membresía de alto nivel y los controles de seguridad de ASP.NET. Estos controles incluyen un control de inicio de sesión listo para usar y altamente personalizable.

La flexibilidad para personalizar la apariencia no está disponible con otros métodos de autenticación. La autenticación de Windows requiere que el navegador solicite la identidad del usuario.

Funciona con cualquier navegador

La autenticación de formularios utiliza HTML estándar como interfaz de usuario para que todos los navegadores puedan procesarlo.

La autenticación de formularios utiliza formularios HTML estándar para ingresar y enviar credenciales de usuario. Esto significa que se debe utilizar SSL para cifrar y transmitir de forma segura esta identidad. De lo contrario, al enviar datos al servidor, la información se transmite como texto sin formato.

Almacenamiento de información del usuario

La autenticación de formularios almacena a los usuarios en el archivo web.config de forma predeterminada, pero esta información se puede almacenar en cualquier lugar. Todo lo que necesita hacer es escribir un código que acceda al almacén de datos y recupere información del usuario. (Si utiliza la API de membresía, ni siquiera tendrá que hacer esto). Un ejemplo común sería almacenar información del usuario en una base de datos.

La flexibilidad en el almacenamiento de información del usuario también significa poder controlar la creación y administración de cuentas de usuario, así como adjuntar información adicional a esas cuentas, como preferencias personales para personalizar la apariencia de un sitio web. También puede adjuntar detalles específicos de la empresa, como información cifrada de la tarjeta de crédito si el sitio es una tienda en línea.

¿Cuándo no debería utilizar la autenticación de formularios?

Hasta ahora, hemos analizado las razones por las que la autenticación de formularios se convierte en una opción atractiva para el registro de usuarios. Sin embargo, la autenticación de formularios también tiene sus desventajas:

    Debe crear usted mismo la interfaz de usuario para el registro de usuarios. Puede crear su propia página de inicio de sesión por completo o utilizar controles de seguridad de ASP.NET.

    Debe mantener un directorio de identidad de usuario.

    Debe tomar precauciones adicionales para no interferir con el tráfico de la red.

Esto se discutirá con más detalle en secciones posteriores. Las dos primeras deficiencias se pueden abordar mediante el uso de Membership API, que proporciona controles prediseñados y un esquema de almacenamiento de identidad con una solución lista para usar basada en SQL Server.

Creando tu propia interfaz de registro

Como se mencionó anteriormente, la autenticación de formularios le brinda control total sobre la interfaz a través de la cual los usuarios inician sesión en su aplicación web. Además de los beneficios, este enfoque requiere algo de trabajo adicional, ya que usted mismo debe crear la página de inicio de sesión. Otras opciones de autenticación ofrecen formularios ya preparados. Por ejemplo, si se utiliza la autenticación de Windows, el navegador ofrecerá un cuadro de diálogo estándar. La autenticación de Passport siempre utiliza la interfaz de usuario del sitio Passport para registrar usuarios.

Crear una página de inicio de sesión para la autenticación de formularios no requiere mucho trabajo. Sólo cabe señalar que la autenticación de formularios es sólo una plataforma para crear un sistema de autenticación y no un sistema listo para usar.

Por otro lado, la nueva API de membresía incluye un control de inicio de sesión prediseñado que se puede usar en una página de inicio de sesión independiente o como parte de cualquier página de aplicación web. La interfaz de usuario es personalizable e interactúa automáticamente con la API de membresía cuando un usuario inicia sesión. El control se encarga de la mayor parte del trabajo de creación de páginas de inicio de sesión personalizadas.

En la mayoría de los casos, crear su propia página de inicio de sesión no requiere más que agregar una página .aspx que contenga el control a su solución. Si está satisfecho con el comportamiento predeterminado de este control (que es la mayor parte del tiempo), entonces no tendrá que interceptar ningún evento ni escribir su propio código.

Mantenimiento de la información del usuario.

Al utilizar la autenticación de formularios, usted es responsable de mantener información detallada sobre los usuarios que tienen acceso a su sistema. Los detalles más importantes son las credenciales que los usuarios deben presentar para iniciar sesión. No sólo tendrá que elegir una forma de almacenarlos, sino también garantizar la seguridad del almacenamiento. Además, deberá proporcionar algún tipo de herramientas administrativas para gestionar los datos de los usuarios en el repositorio.

La plataforma Membership API viene con un esquema prediseñado para almacenar identidades en una base de datos de SQL Server. Al utilizar este esquema ya preparado, puede ahorrar mucho tiempo. Además, el esquema es extensible. Sin embargo, usted es responsable de realizar una copia de seguridad segura de su almacén de identidades para poder restaurarlo en caso de una falla del sistema.

Todo lo anterior no se aplica a la mayoría de los demás tipos de autenticación. Con la autenticación de Windows, el sistema operativo subyacente es responsable de almacenar las credenciales del usuario. Windows tiene muchos trucos para almacenarlos automáticamente de forma segura, para que no tengas que hacer ningún trabajo extra. Con la autenticación Passport, las credenciales se almacenan de forma segura en servidores Passport dedicados.

Interceptar el tráfico de la red

Cuando un usuario ingresa información de identidad durante la autenticación de formularios, se envía desde el navegador al servidor en formato de texto sin formato. Esto significa que cualquiera que lo intercepte podrá leerlo. Evidentemente, esta situación no es segura.

La solución habitual a este problema es utilizar SSL (como se describe en el artículo anterior). En este punto, es posible que desee utilizar SSL para proteger solo la página de registro en lugar de toda la aplicación. La autenticación de formularios se puede configurar para cifrar y firmar cookies, lo que hace mucho más difícil para un atacante obtener información de ellas. Además, las cookies no deben contener información confidencial y, por lo tanto, no incluyen contraseñas ingresadas durante la autenticación.

Pero, ¿qué pasa si un atacante intercepta tráfico no cifrado, extrae la cookie (que ya está cifrada) y la utiliza para sus propios fines? No necesita descifrarlo, sólo necesita proporcionarle sus propias solicitudes reenviadas. La única forma de contrarrestar un ataque de repetición de este tipo es utilizar SSL para todo el sitio.

Otros mecanismos de autenticación no requieren trabajo adicional. Con la autenticación de Windows, puede utilizar un protocolo que proporciona automáticamente un proceso de inicio de sesión seguro (con la salvedad de que no es compatible con todos los navegadores o entornos de red). Con la autenticación Passport, el proceso de registro lo gestionan de forma transparente los servidores Passport, que siempre utilizan SSL.

¿Por qué no implementar la autenticación de cookies usted mismo?

Dependiendo de las configuraciones que aprenderá en artículos posteriores, la autenticación de formularios utiliza cookies para emitir tickets de autenticación a clientes y usuarios. El término más general para este enfoque se llama autenticación de cookies. La autenticación mediante cookies a primera vista parece un sistema muy sencillo. Puede surgir la pregunta: ¿por qué no implementarlo usted mismo, utilizando cookies y variables de sesión?

La razón es la misma por la que los desarrolladores no implementan otras características de ASP.NET, desde el estado de la sesión hasta el marco de control web. ASP.NET no sólo es un marco sin preocupaciones, sino que también ofrece una implementación segura, bien probada y extensible. A continuación se detallan algunos de los beneficios de implementar la autenticación mediante formularios ASP.NET:

    Las cookies de autenticación son seguras.

    La autenticación de formularios es un sistema minuciosamente probado.

    La autenticación de formularios está integrada con las clases de seguridad de .NET.

Proteger las cookies de autenticación

La autenticación de cookies parece simple, pero si se implementa incorrectamente, puede resultar en un sistema inseguro. Las cookies en sí mismas no son un lugar seguro para almacenar información porque un atacante puede ver y editar fácilmente los datos de las cookies. Si la autenticación se basa en cookies inseguras, un pirata informático puede comprometer fácilmente el sistema.

De forma predeterminada, el módulo de autenticación de formularios cifra la información de autenticación antes de colocarla en una cookie. También proporciona un código hash y verifica la cookie cuando se devuelve al servidor para asegurarse de que no haya sido modificada. La combinación de estos dos procesos garantiza que las cookies sean seguras y eliminan la necesidad de escribir su propio código de seguridad. La mayoría de los ejemplos de autenticación de cookies locales son mucho menos seguros.

La autenticación de formularios se prueba minuciosamente

La autenticación de formularios es una parte integral de ASP.NET y, como tal, se utiliza en muchas aplicaciones web y sitios web. Cuando tanta gente utiliza el mismo sistema, cualquier deficiencia se identifica, publica y resuelve rápidamente. Siempre que instales todos los parches a tiempo, podrás considerarte seguro. Por otro lado, si crea su propio sistema de autenticación basado en cookies, se perderá los beneficios de dichas pruebas masivas. Y la primera vez que se descubre una vulnerabilidad estará asociada con un pirateo de su sistema operativo.

Integración con la plataforma de seguridad ASP.NET

Todos los tipos de autenticación ASP.NET forman parte de un marco común y coherente. La autenticación de formularios está completamente integrada con esta plataforma de seguridad. Por ejemplo, completa el objeto de contexto de seguridad (IPrincipal) como debería. Esto facilita la personalización del comportamiento de autenticación de formularios a su gusto.

Clases de autenticación de formularios

La parte más importante del marco de autenticación de formularios es FormsAuthenticationModule. Esta es la clase HttpModule que detecta los tickets de autenticación de formularios presentes en la solicitud. Si dicho ticket no está disponible y el usuario ha solicitado un recurso protegido, la solicitud se redirige automáticamente a la página de inicio de sesión especificada en el archivo web.config antes de que el tiempo de ejecución toque ese recurso protegido.

Si el ticket está presente, el módulo crea automáticamente un contexto de seguridad inicializando la propiedad HttpContext.Current.User con una instancia GenericPrincipal predeterminada que incluye una instancia de FormsIdentity con el nombre del usuario actualmente conectado. Básicamente, no tendrás que trabajar directamente con este módulo. La interfaz para interactuar con el módulo consta de las clases enumeradas en la siguiente tabla, que se definen en el espacio de nombres System.Web.Security:

Clases de plataforma de autenticación de formularios
nombre de clase Todas las acciones básicas para la autenticación del usuario las realiza el objeto PassportIdentity, o más bien el servicio Microsoft Passport, al que accede .NET Framework mediante el objeto PassportIdentity. Es por eso que todo lo que tienes que hacer es cosechar los beneficios, pero para saber exactamente qué puedes y debes cosechar, consulta la Tabla 1, que explica todos los posibles atributos que describen al usuario registrado.
Autenticación de formularios

La clase principal para interactuar con la infraestructura de autenticación de formularios. Proporciona información de configuración básica y le permite crear un ticket, configurar cookies y redirigir desde la página de inicio de sesión a la página solicitada original si la identidad del usuario se verifica correctamente.

FormulariosAutenticaciónEventArgs

FormsAuthenticationEventArgs activa un evento de autenticación, que puede interceptarse. Las convenciones de los argumentos del evento pasados ​​se encapsulan en una instancia de esta clase. Contiene información básica sobre el usuario autenticado.

FormulariosAutenticaciónTicket

Esta clase proporciona información del usuario que se cifrará y se colocará en la cookie de autenticación.

FormulariosIdentidad

Esta clase implementa la interfaz IIdentity y es específica para la autenticación de formularios. Una adición clave a la clase FormsIdentity, además de los miembros necesarios para implementar la interfaz IIdentity, es la propiedad Ticket, que representa un ticket de autenticación. Esto le permite almacenar y recuperar información adicional del ticket, como información de función almacenada en caché para escenarios simples.

Módulo de autenticación de formularios

El núcleo de la infraestructura de autenticación de formularios que establece el contexto de seguridad y redirige automáticamente a la página de inicio de sesión cuando es necesario.

En su mayor parte, necesitará utilizar las clases FormsAuthentication y FormsIdentity, que representan al usuario autenticado correctamente de la aplicación. A continuación, le mostraremos cómo utilizar la autenticación de formularios en sus aplicaciones.

Los controles de inicio de sesión de ASP.NET proporcionan una solución de inicio de sesión sólida para aplicaciones web ASP.NET sin necesidad de programación. De forma predeterminada, los controles de inicio de sesión se integran con la membresía de ASP.NET y la autenticación de formularios para ayudar a automatizar la autenticación de usuarios para un sitio web. Para obtener información sobre cómo utilizar la membresía de ASP.NET con autenticación de formularios, consulte Introducción a la membresía.

De forma predeterminada, los controles de inicio de sesión de ASP.NET funcionan en texto sin formato a través de HTTP. Si le preocupa la seguridad, utilice HTTPS con cifrado SSL. Para obtener más información sobre SSL, consulte Configuración de SSL en un servidor web o un sitio web en la documentación de IIS.

Es posible que los controles de inicio de sesión no funcionen correctamente si ASP.NET Página web se cambia de POST (el valor predeterminado) a GET.

Este tema describe cada control de inicio de sesión de ASP.NET y proporciona vínculos a la documentación de referencia del control.

El control de inicio de sesión

El control de nombre de inicio de sesión

La información de contraseña enviada en un mensaje de correo electrónico se envía como texto sin cifrar.




Arriba