始终使用Asp.net标识进行加密

始终使用Asp.net标识进行加密,asp.net,asp.net-identity,always-encrypted,Asp.net,Asp.net Identity,Always Encrypted,我们正在尝试将Sql 2016的始终加密功能与Asp.net Identity 2.0一起使用。当我们将客户的数据存储到AspNetUsers表时,需要对其进行加密。这是为了遵循GDPR合规性。我们在电话号码和电子邮件栏中设置了“始终加密”。我们可以加密电话号码,但当我们尝试加密电子邮件列时,帐户控制器中的注册方法失败。当我们尝试注册时,会出现以下异常: System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()“, “

我们正在尝试将Sql 2016的始终加密功能与Asp.net Identity 2.0一起使用。当我们将客户的数据存储到AspNetUsers表时,需要对其进行加密。这是为了遵循GDPR合规性。我们在电话号码和电子邮件栏中设置了“始终加密”。我们可以加密电话号码,但当我们尝试加密电子邮件列时,帐户控制器中的注册方法失败。当我们尝试注册时,会出现以下异常:

System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()“, “内部异常”:{ “消息”:“发生错误。”, “ExceptionMessage:“操作数类型冲突:nvarchar(256)加密(加密类型='DETERMINISTIC',加密算法名称='AEAD\U AES\U 256\U CBC\U HMAC\U SHA\U 256',列加密\U key\U name='CEK\U Auto1',列加密\U key\U数据库\U name='StoreIdentityEF6AE')排序规则名称='Latin1\U General\U BIN2'与varchar不兼容”, “ExceptionType”:“System.Data.SqlClient.SqlException”


是否有人遇到此问题并成功解决了此问题?正在寻找一些建议,以使用Asp.net身份加密客户数据

我也一直在努力解决此问题,并认为我找到了解决方案

ASP.NET标识使用UserStore:

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


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

谢谢您的回答,Terry。我们使用基于代码的加密,因为在使用数据库级加密时还存在其他后勤方面的挑战。但是,可以肯定的是,我下次会尝试您关于自定义IUserStore的建议。