ASP.NET数据保护-从MachineKey迁移

问题描述 投票:0回答:1

我在ASP.NET中使用MachineKey.ProtectMachineKey.Unprotect加密和解密敏感数据。现在,我正在尝试迁移到ASP.NET Core。我读到它有一个数据保护API。但是我有以下问题,无法在文档中找到答案:

  1. 我在web.config中定义了验证密钥和解密密钥。但是数据保护API似乎会自动生成密钥。因此,如何手动分配这些相同的密钥对,以便可以解密以前加密的数据。
  2. 数据保护API似乎会自动使密钥失效并创建新密钥。那么,如何解密使用先前密钥加密的数据?我应该以某种方式禁用此到期机制吗?
c# asp.net asp.net-core encryption
1个回答
-1
投票

您可以将这些代码用于.net core中的机器密钥保护。也请参见此链接。 AspNetTicketBridge

public async Task InvokeAsync(HttpContext context)
    {
        try
        {
            var authorizationToken = context.Request.Headers.FirstOrDefault(q => q.Key.Equals("Authorization")).Value;

            // Decrypt the token
            var ticket = MachineKeyTicketUnprotector.UnprotectOAuthToken(GetTokenWithoutBearer(authorizationToken), _config.DecryptionKey, _config.ValidationKey);

            // The ticket is in v3 format and needs to be converted to v5 (ASP.NET Core 2.0).
            // Can use whatever you want for AuthScheme
            var newTicket = AuthenticationTicketConverter.Convert(ticket, "");

            // If using a custom AuthenticationHandler, you can return the new ticket 
            // in the HandleAuthenticateAsync method.
            var result = AuthenticateResult.Success(newTicket);

            if (!result.Succeeded)
                await UnAuthorizeRequest(context);

            await _next.Invoke(context);
        }
        catch (Exception)
        {
            await UnAuthorizeRequest(context);
        }
    }`
© www.soinside.com 2019 - 2024. All rights reserved.