如何使用 ProtectedPersonalData 属性

How to use ProtectedPersonalData attribute

我找到了 ASP.NET Core Identity 框架的 class、ProtectedPersonalData (link) 属性,但我似乎找不到任何关于如何操作的文档使用它。 文档只说:Used to indicate that a something is considered personal data and should be protected.

最后,我能够加密身份用户 class 字段 (link)(例如电子邮件字段),但不能加密继承 属性 的身份用户的任何 属性 =37=].

public class ApplicationUser : IdentityUser {

        [ProtectedPersonalData]
        public string MyProperty { get; set; }
}

我将此添加到身份配置中:

services.AddDefaultIdentity<ApplicationUser>(options => {
                options.Stores.ProtectPersonalData = true;
            })
            .AddRoles<IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>();

此外,我实现了保护器 classes:

public class Lookup : ILookupProtector {
            public string Protect(string keyId, string data) {
                return new string(data?.Reverse().ToArray());
            }

            public string Unprotect(string keyId, string data) {
                return new string(data?.Reverse().ToArray());
            }
        }

public class Protector : IPersonalDataProtector {
            public string Protect(string data) {
                return new string(data?.Reverse().ToArray());
            }

            public string Unprotect(string data) {
                return new string(data?.Reverse().ToArray());
            }
        }

public class KeyRing : ILookupProtectorKeyRing {
            public string this[string keyId] => "key";

            public string CurrentKeyId => "key";

            public IEnumerable<string> GetAllKeyIds() {
                return new string[] { "key" };
            }
        }

可以加密 MyProperty 字段吗? 请给我指出信息或提供一些示例。

更新:

我注意到代码从未进入 属性 MyPropertyProtect 方法。

您需要向符合 PersonalData 的属性添加数据注释,如下所示:

[ProtectedPersonalData]
[PersonalData]
public string Firstname { get; set; }

[ProtectedPersonalData]
[PersonalData]
public string Lastname { get; set; }

为了激活您需要在Startup.cs:

中注册服务的过程
// ProtectedData
services.AddScoped<ILookupProtectorKeyRing, KeyRing>();
services.AddScoped<ILookupProtector, LookupProtector>();
services.AddScoped<IPersonalDataProtector, PersonalDataProtector>();

示例存储库

在这里您可以找到一个示例存储库,其中包含带有 Microsoft Identity 帐户和 ProtectedData 实施的项目 Blazor WASM。

https://github.com/nbiada/protecteddata-wasm-example