始终使用Asp.net身份加密

时间:2018-01-20 01:27:30

标签: asp.net asp.net-identity always-encrypted

我们正在尝试使用Asp.net Identity 2.0的Sql 2016的Always Encrypted功能。当我们将客户的数据存储到AspNetUsers表时,我们需要对其进行加密。这是遵循GDPR合规性的。我们在PhoneNumber和Email列上设置了Always Encrpted。我们能够加密电话号码,但当我们尝试加密电子邮件列时,帐户控制器中的注册方法失败。当我们尝试注册时,我们得到以下异常:

  

System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()&#34 ;,       " InnerException":{           "消息":"发生了错误。",           " ExceptionMessage":"操作数类型冲突:nvarchar(256)加密(encryption_type =' DETERMINISTIC',encryption_algorithm_name =' AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name =&# 39; CEK_Auto1',column_encryption_key_database_name =' StoreIdentityEF6AE')collat​​ion_name =' Latin1_General_BIN2'与varchar"不兼容,           " ExceptionType":" System.Data.SqlClient.SqlException",

是否有人遇到此问题并成功解决?寻找使用Asp.net Identity加密客户数据的一些建议

1 个答案:

答案 0 :(得分:1)

我也在努力解决这个问题,并认为我找到了解决方案。

ASP.NET Identity使用UserStore:see implementation here

在该UserStore中,一些方法使用ToUpper方法。 您的电子邮件列已加密,因此ToUpper方法无法使用。它无法创建包含SQL ToUpper逻辑的查询。

我们所做的是构建IUserStore的自定义实现,并从EmailAddress上的查询中删除ToUpper。

相关问题