Где хранить закрытый ключ шифрования RSAC#

Место общения программистов C#
Ответить
Anonymous
 Где хранить закрытый ключ шифрования RSA

Сообщение Anonymous »

Я разрабатываю веб-API ASP.NET Core и хочу использовать JWT (веб-токены JSON) для аутентификации. Я хочу подписать токены с использованием шифрования RSA. API должен быть развертываемым как на серверах Linux, так и на серверах Windows, поэтому решение должно быть кроссплатформенным.
Ниже приведен мой текущий код для создания токена JWT и экспорта закрытого ключа:
Ниже приведен мой текущий код для создания токена JWT и экспорта закрытого ключа:
p>

Код: Выделить всё

using System;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Security.Cryptography;
using Microsoft.IdentityModel.Tokens;

public class JwtTokenGenerator
{
private readonly RSA _rsa;
private readonly RsaSecurityKey _rsaSecurityKey;
private readonly string _issuer;
private readonly string _audience;

public JwtTokenGenerator(string issuer, string audience)
{
_issuer = issuer;
_audience = audience;

// Generate RSA key
_rsa = RSA.Create();
_rsa.KeySize = 2048; // Set key size
_rsaSecurityKey = new RsaSecurityKey(_rsa);
}

/// 
/// Generates a JWT token
/// 
/// List of claims for the token
/// Token validity in minutes
/// The generated JWT token as a string
public string GenerateToken(Claim[] claims, int expiresInMinutes)
{
var signingCredentials = new SigningCredentials(_rsaSecurityKey, SecurityAlgorithms.RsaSha256);

var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(claims),
Expires = DateTime.UtcNow.AddMinutes(expiresInMinutes),
Issuer = _issuer,
Audience = _audience,
SigningCredentials = signingCredentials
};

var tokenHandler = new JwtSecurityTokenHandler();
var token = tokenHandler.CreateToken(tokenDescriptor);

return tokenHandler.WriteToken(token);
}

/// 
/// Exports the private RSA key as XML
/// 
/// The private key as an XML string
public string ExportPrivateKey()
{
return _rsa.ToXmlString(true); // Export the private key
}
}
ВОПРОС: Где я могу безопасно хранить закрытый ключ? Переменные среды? Я знаю, что хранить его в коде или настройках — неправильный способ.
Если у вас есть ответ, пожалуйста, объясните его немного. Спасибо тебе


Подробнее здесь: https://stackoverflow.com/questions/792 ... encryption
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»