당신의 앱에 대한 자체 인증을 구축해야 합니까?
나는 많은 개발자들이 "내 앱에 대한 나만의 인증을 구축해야 하는가?"라는 질문을 하는 것을 보았다. 답이 간단히 "예" 또는 "아니오"로 나올 수 없기 때문에, 이를 도와줄 수 있도록 실행을 분해하고 장단점을 보여주는 기사를 쓰고 싶었다.
배경
나는 많은 개발자들이 "내 앱에 대한 나만의 인증을 구축해야 하는가?"라는 질문을 하는 것을 보았다. 답이 간단히 "예" 또는 "아니오"로 나올 수 없기 때문에, 이를 도와줄 수 있도록 실행을 분해하고 장단점을 보여주는 기사를 쓰고 싶었다.
TL;DR 진정으로 완전한 제어를 원하거나 아직 소프트웨어 개발을 배우고 있는 경우가 아니라면, 반드시 필요에 맞는 기존 해결 방법을 찾아야 합니다.
소개
개발자로서, 나는 내 커리어 동안 많은 어플리케이션을 구축했다. 프로그래밍 언어에 관계없이, 나는 항상 구축해야 하는 공통 기반을 가지고 있다: 사용자 인증.
20년 전으로 돌아가면 모든 것이 간단하기 때문에 이는 무시할 만한 부분이었습니다.:
- 사용자 이름과 암호를 사용한 등록 및 로그인 시스템 구현.
- 사용자 세션을 유지하는 메커니즘을 만듭니다.
- 보안에 대해서는? MD5가 대답입니다.
그게 다였습니다. 그런 다음 나는 "진짜 평가"에 집중할 수 있었습니다. MD5에 대해 듣지 못했냐구요? 소프트웨어 개발의 "좋은 시절"을 놓쳤답니다. 요즘 개발자들은 로그인/업을 구축할 때 더 많은 도전에 직면하고 있습니다.
비상을 울리는 것처럼 들릴 수 있지만, 예를 들어 자세히 설명해 보겠습니다.
예제: 온라인 서점
당신이 API 서비스와 웹 프론트엔드 앱을 가진 온라인 서점을 구축하려고 한다고 가정해 봅시다.
먼저, "auth"의 범위를 정의해야 합니다. Auth는 인증과 권한을 설명할 수 있으며, 그들은 전적으로 다른 정의와 사용 사례를 가지고 있습니다:
나는 이 개념들에 대해 자세히 논의하기 위해 CIAM 101: 인증, 신원, SSO라는 기사를 썼습니다.
인증 방법 선택
우리의 예에서 "인증", 즉 사용자 로그인 부터 시작해봅시다. 사용자 이름과 암호 방법 뿐만 아니라, 여기에는 사용자 전환와 보안을 더 잘 하기 위해 사람들이 채택하려는 트렌드가 있는 방법들이 있습니다:
- Passwordless, 즉 동적 검증 코드 (이메일이나 sms를 통해)