Проблема столкновения типов операндов с Always Encrypted с Asp.net Identity
Мы пытаемся использовать функцию Always Encrypted в Sql 2016 с Asp.net Identity 2.0. Мы установили Always Encrpted для столбцов PhoneNumber и Email. Мы можем зашифровать номер телефона, но метод регистрации в Account Controller не удается, когда мы пытаемся зашифровать столбец электронной почты. При попытке зарегистрироваться мы получаем следующее исключение:
System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext () "," InnerException ": {" Message ":" Произошла ошибка.", "ExceptionMessage": " Тип операндов clash: nvarchar(256), зашифрованный с помощью (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_encryption_key_database_name = 'StoreIdentityEF6AE') collation_name = 'Latin1_General_BIN2' несовместима с VARCHAR", "ExceptionType": "System.Data.SqlClient.SqlException",
Кто-нибудь сталкивался с этой проблемой и успешно решил? Ищете некоторые предложения для шифрования данных клиентов с Asp.net Identity
1 ответ
Я решил свою проблему.
ASP.NET Identity использует UserStore. Этот файл содержит некоторые методы, такие как FindByNameAsync, которые ищут указанное имя, но конвертируют его в запрос ToUpper.
Столбцы Always Encrypted нельзя запросить с помощью преобразования ToUpper.