Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 2915|Respuesta: 0

[Fuente] ASP.NET Core (22) se basa en la protección de datos IDataProtectionProvider

[Copiar enlace]
Publicado en 15/8/2023 10:21:16 | | | |
Requisitos: Durante el proceso de desarrollo, a menudo puede encontrarse con algunos escenarios de cifrado y descifrado, por ejemplo, la autenticación de correo electrónico puede llevar una cadena cifrada, y cuando el usuario hace clic en el enlace para saltar a la interfaz, el sistema puede descifrar el contenido de la cadena de forma normal, realizando así la función de autenticación por correo electrónico.

Generar elementos usando PowerShell <machineKey>
https://www.itsvse.com/thread-10644-1-1.html

Cifrar datos con ASP.NET machineKey
https://www.itsvse.com/thread-9535-1-1.html

ASP.NET El papel de machineKey y cómo utilizarlo
https://www.itsvse.com/thread-2705-1-1.html

ASP.NET Core ofrece funciones de protección de datos:El inicio de sesión del hipervínculo es visible.

Paquete principal

Los principales paquetes implicados en la Protección de Datos son los siguientes, que se referencian según sea necesario:

  • Microsoft.AspNetCore.DataProtection.Abstractions estándar. Nombre de paquetes de componentes de la capa de abstracción NET Core. Incluye servicios de interfaz importantes como IDataProtectionProvider e IDataProtector.
  • Microsoft.AspNetCore.DataProtection, incluyendo operaciones criptográficas principales, gestión de claves, configuración y extensibilidad.
  • Extensión Microsoft.AspNetCore.DataProtection.Extensions. Proporciona un método de fábrica para crear instancias y un método de extensión de almacenamiento para claves. Este paquete se utiliza en modo no DI.
  • Microsoft.AspNetCore.DataProtection.SystemWeb <machineKey>implementa compatibilidad con los mecanismos de cifrado y descifrado en ASP.NET 4.x.
  • Microsoft.AspNetCore.Cryptography.KeyDerivation proporciona una implementación de la rutina de hash de contraseñas PBKDF2. Úsalo cuando necesites cifrado hash.


IDataProtectionProvider vs IDataProtector

IDataProtectionProvider se basa en el modelo Provider de Microsoft y se utiliza para proporcionar políticas para la creación de instancias. Crea un objeto IDataProtector llamando al método IDataProtectionProvider.CreateProtector(purpose).
IDataProtector es un servicio responsable del cifrado y el descifrado, que principalmente proporciona dos tipos de métodos: protect y unprotect (cada tipo tiene muchos métodos de sobrecarga y extensión). Una comprensión sencilla es que protect se usa para cifrado y unprotect para descifrado.
El parámetro Create method de IDataProtectionProvider es una cadena que proporciona funcionalidad de aislamiento. Los IDataProtectors creados con cadenas no pasables obtendrán resultados de cifrado diferentes incluso si cifran el mismo objeto. IDataProtector en sí es también un IDataProtectionProvider implícito, que también proporciona el método CreateProtector(purpose). Esto significa que puede implementarse fácilmenteModo de aplicación multi-inquilino



Aquí tienes algunas cosas a tener en cuenta:

Instancias de IDataProtectionProvider e IDataProtectorSeguridad de roscaBlanco.
El método unprotect es informar al llamante de que la descifración falló lanzando una excepción. La clase de excepción es CryptographicException.

ASP.NET Core es una protección de datos sencilla de usar

Se añade una nueva interfaz para cifrar y descifrar datos, y el código es el siguiente:

La prueba es la siguiente:



IDataProtectionProvider es un patrón singleton con el siguiente código:El inicio de sesión del hipervínculo es visible.



Gestión clave

Si el perfil de usuario está disponible, la clave se conserva para%LOCALAPPDATA%\ASP.NET\DataProtection-Keyscarpeta. Si el sistema operativo es Windows, la clave se cifra en reposo usando DPAPI. Como se muestra a continuación:



Vida clave

Por defecto, la claveEl ciclo de vida es de 90 días。 Cuando la clave expira, la aplicación genera automáticamente una nueva clave y establece la nueva clave como la clave activa. Mientras las claves desactivadas permanezcan en el sistema, tu aplicación puede descifrar cualquier dato protegido por ellas. Para más información, véase Gestión de llaves.El inicio de sesión del hipervínculo es visible.

Algoritmo por defecto

Los algoritmos de protección de carga por defecto utilizados son AES-256-CBC (por confidencialidad) y HMACSHA256 (por autenticidad). La clave maestra de 512 bits, que cambia cada 90 días, se utiliza para derivar dos subclaves para estos algoritmos basadas en cada carga útil.

ASP.NET proveedor de almacenamiento clave en Core

Sistema de archivos: PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, which requires reference: Azure.Extensions.AspNetCore.DataProtection.Blobs
Almacenamiento Redis: PersistKeysToStackExchangeRedis, referencia requerida: Microsoft.AspNetCore.DataProtection.StackExchangeRedis

Referencia:El inicio de sesión del hipervínculo es visible.

Clústeres y distribución

Si la clave del servidor es inconsistente, por ejemplo: cifrado del servidor A y descifrado del servidor B, se lanzará una excepción (como se muestra en la figura siguiente) y debe desplegarse la misma clave.



Configura la misma clave de la siguiente manera:

Una vez que el programa está en ejecución, genera automáticamente un archivo de clave *.xml bajo la carpeta publish_itsvse¡, mantén este archivo consistente en diferentes servidores! Como se muestra a continuación:



ASP.NET Configuración de protección del núcleo

ASP.NET CORE ofrece soporte enriquecido para API, persistencia de contraseñas, configuración y funciones de personalización.

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Escenario de almacenamiento en la nube de Azure.
  • PersistKeysToFileSystem。 Esquema de almacenamiento del sistema de archivos local que registra algoritmos de cifrado, claves y dependencias.
  • ProtectKeysWith*。 El cifrado se proporciona mediante extensiones de este método de nombres. Por ejemplo, ProtectKeysWithCertificate
  • SetDefaultKeyLifetime。 Establece la vida útil de la clave en 90 días por defecto.
  • SetApplicationName。 Pon el nombre de la app. Por defecto, los mecanismos de protección de datos están absolutamente aislados de cada aplicación. El intercambio de claves entre aplicaciones se puede lograr estableciendo el mismo nombre de aplicación.
  • DisableAutomaticKeyGeneration。 Evita que la clave se revierta automáticamente. Muchas veces no queremos que cambien las contraseñas o en un servicio de clúster tenemos un servicio dedicado responsable de la reversión de actualizaciones de claves, y otras cargas útiles solo necesitan obtenerlo desde un lugar compartido.
  • UseCryptographicAlgorithms。 Utiliza algoritmos personalizados de cifrado y descifrado


Referencia:El inicio de sesión del hipervínculo es visible.





Anterior:Usa PowerShell para generar el elemento &lt;machineKey&gt;
Próximo:Compara Tailscale, ZeroTier, WireGuard, OmniEdge y Ngrok para soluciones de geo-red
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com