ASP.NET Core의 다단계 인증

완료됨

이전 단원에서는 ID에 ASP.NET Core를 사용자 지정하고 확장했습니다. 이 단원에서는 다단계 인증 및 ID에서 구현되는 방법에 대해 알아봅니다.

Multi-Factor Authentication

MFA(Multi-Factor Authentication)는 로그인 중에 사용자에게 추가 식별 형식을 묻는 메시지가 표시되는 프로세스입니다. 이 프롬프트는 앱의 코드, 하드웨어 토큰 값 또는 생체 인식 검사일 수 있습니다. 두 번째 인증 유형이 필요한 경우 보안이 강화됩니다.

인증에 필요한 증명은 다음 세 가지 유형으로 분류됩니다.

  • 암호 또는 보안 질문처럼 사용자가 알고 있는 것
  • 하드웨어 토큰 또는 휴대폰의 앱과 같이 가지고 있는 항목
  • 지문 또는 얼굴 스캔과 같이 사용자 고유 사항

MFA 효과 대부분은 다양한 유형의 인증을 사용하는 데서 비롯됩니다. 악의적 사용자는 알고 있는 여러 가지(예: 암호 및 어린 시절 별명)에 액세스할 수 있지만, 알고 있는 것가지고 있는 것 또는 개인 정보를 모두 손상하는 것은 더 어렵습니다.

시간 제약이 있는 일회성 암호

TOTP(시간 제약이 있는 일회성 암호)는 30초 후에 만료되는 고유한 숫자 코드를 생성하는 잘 알려진 알고리즘입니다.시간 알고리즘은 현재 시간과 고유 키라는 두 개의 입력을 사용합니다.

등록할 때 사용자는 TOTP 규격 앱에 키를 입력합니다. 이러한 앱은 다음과 같습니다.

  • Microsoft Authenticator
  • Google Authenticator
  • LastPass Authenticator

QR 코드를 사용하여 앱에 키를 입력하면 간소화할 수 있습니다. 앱은 키와 현재 시간을 사용하여 30초마다 고유한 코드를 생성하고 표시합니다. 앱에서 생성하는 코드가 서버에서 기대하는 코드와 일치하면 인증이 성공합니다. 이 알고리즘은 디바이스의 클록과 서버 간의 사소한 차이를 무시하도록 설계되었습니다.

MFA의 한 형태인 사용자는 일반적으로 암호와 함께 TOTP 코드를 입력하라는 메시지가 표시됩니다. 암호는 사용자가 알고 있는 것이며 코드는 사용자가 가지고 있는 것을 증명합니다. 코드를 생성하는 유일한 방법은 앱에 저장된 키뿐이기 때문입니다.

기본적으로 ID를 사용하는 ASP.NET Core 프로젝트 템플릿에는 TOTP Authenticator 앱에 대한 다단계 인증 지원이 포함됩니다. Razor Pages 템플릿의 Authenticator 앱 구성 양식에는 토큰 값을 시드하기 위한 32자 등록 키가 표시됩니다. 그러나 템플릿은 기본적으로 QR 코드를 생성하지 않습니다.

참고

SMS 문자 메시지에서 보낸 코드는 TOTP의 일반적인 대안입니다. 결국 SMS 메시지를 받는 전화는 사용자가 가지고 있는 것입니다. 그러나 MFA로서의 SMS는 악의적 사용자에게 공격을 허용하기가 상대적으로 쉽습니다. 따라서 SMS 코드는 더 이상 안전한 형태의 MFA로 간주되지 않습니다.

요약

이 단원에서는 다단계 인증이 무엇이며 기본적으로 ASP.NET Core ID에서 구현되는 방법을 알아보았습니다. 다음 단원에서는 등록 키를 포함하는 QR 코드를 제공하도록 기존 Authenticator 앱 구성 양식을 사용자 지정할 수 있습니다.