ASP.NET Core 데이터 보호 기반 인증 token 예제 생 성

2020 단어 asp.nettoken
ASP.NET Core Data Protection 은 비대 칭 암호 화 능력 을 제공 할 뿐만 아니 라 유연 한 비밀 키 저장 방식 과 일치 하 는 복호화 인터페이스(Protect 와 Unprotect)를 제공 합 니 다.Session 에 서 는 이 를 사 용 했 고,Cookie 인증 에 서 는 이 를 사 용 했 으 며,OpenIdConnect 에 도 이 를 사 용 했 습 니 다.물론 응용 개발 에서 도 사용 할 수 있 습 니 다.예 를 들 어 이 블 로그 에서 계 정 을 활성화 하 는 인증 token 을 만 드 는 것 입 니 다.
먼저 Startup.Configure Services()에 DataProtection 서 비 스 를 등록 합 니 다(IDataProtection Provider 인 터 페 이 스 를 주입 하 는 실현).

public void ConfigureServices(IServiceCollection services)
{
  services.AddDataProtection();
}
그 다음 에 DataProtection 을 사용 하 는 클래스 의 구조 함수 에 IDataProtection Provider 인 터 페 이 스 를 추가 하고 이 인터페이스 로 DataProtector 를 만 든 다음 에 이 를 통 해 SecureDataFormat 을 만 들 고 마지막 으로 SecureDataFormat.Protect()방법 으로 계 정 을 활성화 하 는 token 을 만 들 고 SecureDataFormat.Uprotect()로 token 을 복호화 합 니 다.완전한 예제 코드 는 다음 과 같 습 니 다.

public class HomeController : Controller
{
  private readonly ISecureDataFormat<string> _dataFormat;

  public HomeController(IDataProtectionProvider _dataProtectionProvider)
  {
    var dataProtector = _dataProtectionProvider.CreateProtector(typeof(HomeController).FullName);
    _dataFormat = new SecureDataFormat<string>(new StringSerializer(), dataProtector);
  }

  public string GenerateToken()
  {
    return _dataFormat.Protect(Guid.NewGuid().ToString() + ";" + DateTime.Now.AddHours(10));
  }

  public string DecryptToken(string token)
  {
    return _dataFormat.Unprotect(token);
  }

  private class StringSerializer : IDataSerializer<string>
  {
    public string Deserialize(byte[] data)
    {
      return Encoding.UTF8.GetString(data);
    }

    public byte[] Serialize(string model)
    {
      return Encoding.UTF8.GetBytes(model);
    }
  }
}

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기