3

모바일 응용 프로그램과 브라우저 기반 클라이언트와 사용자가 모두있는 REST API를 구현하고 있습니다. 내가 물어 본 질문과 여기의 이전 질문 및 security.stackexchange를 기반으로 할 수있는 한 최대한 "RESTful"상태를 유지하기 위해 SSL을 통한 HTTP 기본 인증만으로 인증에 충분하다는 결론을 얻었습니다. 문제는 두 가지 요소 인증을 함께 구현하는 것입니다. username : password : token과 같은 401 Authorization 헤더 응답에 헤더를 추가하거나 완전히 별도의 요청 헤더에서 클라이언트의 기본 인증 응답과 동일한 페이로드에 헤더를 추가 할 수 있습니까? node.js + express/connect를 사용하고 있기 때문에 전체 HTTP 프로토콜 스택에 액세스 할 수 있지만 확장 성 이유로 가능한 한 안정적으로 유지하려고합니다. 브라우저 측면에서 기본 인증을 수행 할 수 있다고 생각합니다. 통과하면 TFA 토큰을 요청하고 인증 된 사용자 만 고려합니다.REST API에 대한 기본 인증을 사용하는 두 가지 요소 인증?

답변

6

기술적으로 HTTP 기본 인증에서 확장 할 수있는 새로운 인증 구성표를 만들 수 있지만 일반적으로 브라우저에서는 지원되지 않습니다. 예를 들어, 어떤 브라우저도 기본적으로 사용자 이름과 비밀번호를 요청할 수있는 것과 동일한 방식으로 username : password : 토큰을 요청하고 보낼 수 있다고 생각하지 않습니다.

일반적으로 두 요소 인증 스키마는 두 번째 예제에서 언급 한 것처럼 일부 형식의 세션을 사용하여 사용자를 중개 상태로 만드는 방식으로 작동합니다. 첫 번째 요소를 통과 한 사용자, 즉 Basic Auth를 통해 사용자 이름/암호를 말한 세션은 열린 세션이지만 두 번째 요소를 통과 할 때까지 실제로 로그인 한 상태로 표시되지 않습니다. 동글 코드 등을 입력하십시오. 두 가지 요소가 모두 통과되면 세션은 완전히 로그인 된 것으로 표시되고 계정/데이터/무엇이든 액세스 할 수 있습니다.

관련 문제