ASP.NET Core의 다단계 인증
이전 단원에서는 ID에 ASP.NET Core를 사용자 지정하고 확장했습니다. 이 단원에서는 다단계 인증과 Identity에서 다단계 인증을 구현하는 방법에 대해 알아봅니다.
다단계 인증
MFA(다단계 인증)는 로그인하는 동안 사용자에게 추가적인 형태의 확인을 요구하는 프로세스입니다. 이 프롬프트는 앱의 코드, 하드웨어 토큰 값 또는 생체 인식 검사일 수 있습니다. 두 번째 인증 유형이 필요한 경우 보안이 강화됩니다.
인증에 필요한 증명은 다음 세 가지 유형으로 분류됩니다.
- 암호 또는 보안 질문처럼 사용자가 알고 있는 것
- 하드웨어 토큰 또는 휴대폰의 앱과 같이 가지고 있는 항목
- 지문 또는 얼굴 스캔과 같이 사용자 고유 사항
MFA 효과 대부분은 다양한 유형의 인증을 사용하는 데서 비롯됩니다. 악의적 사용자는 암호 및 어린 시절 별명과 같이 사용자가 알고 있는 여러 가지 항목에 액세스할 수 있습니다. 그러나 알고 있는 것과 가지고 있거나 가지고 있는 것을 모두 손상시키는 것은 더 어렵습니다.
시간 제약이 있는 일회성 암호
TOTP(시간 제약이 있는 일회성 암호)는 30초 후에 만료되는 고유한 숫자 코드를 생성하는 잘 알려진 알고리즘입니다.시간 알고리즘은 현재 시간과 고유 키라는 두 개의 입력을 사용합니다.
사용자가 등록할 때 TOTP 규격 앱에 키를 입력합니다. 이러한 앱은 다음과 같습니다.
- 표시할 수 있습니다.
- Google Authenticator.
- 그 외 다수
QR 코드를 사용하여 앱에 키를 입력하면 간소화할 수 있습니다. 앱은 키와 현재 시간을 사용하여 30초마다 고유한 코드를 생성하고 표시합니다. 앱에서 생성하는 코드가 서버에서 기대하는 코드와 일치하면 인증이 성공합니다. 이 알고리즘은 디바이스의 클록과 서버 간의 사소한 차이를 무시하도록 설계되었습니다.
MFA의 한 형태인 사용자는 일반적으로 암호와 함께 TOTP 코드를 입력하라는 메시지가 표시됩니다. 암호는 사용자가 알고 있는 것이며 코드는 사용자가 가지고 있는 것을 증명합니다. 이 방법은 앱에 저장된 키를 사용하여 코드를 생성하는 유일한 방법입니다.
기본적으로 Identity를 사용하는 ASP.NET Core 프로젝트 템플릿에는 TOTP 인증 앱을 위한 다단계 인증 지원이 포함됩니다. Razor Pages 템플릿의 Authenticator 앱 구성 양식에는 토큰 값을 시드하기 위한 32자 등록 키가 표시됩니다. 그러나 템플릿은 기본적으로 QR 코드를 생성하지 않습니다.
참고
SMS 문자 메시지에서 보낸 코드는 TOTP의 일반적인 대안입니다. 결국 SMS 메시지를 받는 전화는 사용자가 가지고 있는 것입니다. 그러나 MFA로서의 SMS는 악의적 사용자에게 공격을 허용하기가 상대적으로 쉽습니다. 따라서 SMS 코드는 더 이상 안전한 형태의 MFA로 간주되지 않습니다.
요약
이 단원에서는 다단계 인증이 무엇이며 기본적으로 ASP.NET Core Identity에서 어떻게 구현되는지 알아보았습니다. 다음 단원에서는 등록 키를 포함하는 QR 코드를 제공하도록 기존 Authenticator 앱 구성 양식을 사용자 지정할 수 있습니다.