API가 http 기본 인증을 사용하는 방법


17

API가 클라이언트가 인증해야 할 때 두 가지 다른 시나리오가 사용되는 것을 보았고 상황에 어떤 경우를 사용 해야하는지 궁금합니다.

예 1. 회사는 API를 사용하여 제 3자가 HTTP Basic을 사용하여 토큰 및 비밀로 인증 할 수 있습니다.

예 2. API는 HTTP Basic을 통해 사용자 이름과 비밀번호를 수락하여 최종 사용자를 인증합니다. 일반적으로 그들은 향후 요청을 위해 토큰을 돌려받습니다.

내 설정 : 모바일 및 웹 앱의 백엔드로 사용하는 JSON API가 있습니다. 모바일 앱과 웹 앱 모두 토큰과 비밀을 전송하는 것이 좋습니다.이 두 앱만 다른 제 3자를 차단하는 API에 액세스 할 수 있습니다.

그러나 모바일 및 웹 응용 프로그램을 사용하면 사용자가 게시물을 로그인 및 제출하고 데이터를 볼 수 있습니다. 따라서 각 요청마다 HTTP Basic을 통해 로그인하기를 원합니다.

어떻게 든이 두 가지 방법의 조합을 사용하거나 각 요청마다 최종 사용자 자격 증명 (사용자 이름 및 토큰) 만 보내 집니까? 최종 사용자 자격 증명 만 보내는 경우 클라이언트의 쿠키에 저장합니까?


쿠키는 HTTP 프로토콜의 일부가 아니며 일반적인 브라우저 기능 일뿐입니다. 따라서 웹을 배포하지 않는 경우 잊어 버리십시오.
— Yam Marcovic

쿠키가 권장되지 않는 경우 API를 전달하기 위해 cred를 어떻게 / 어디에 저장합니까?
— Paul Sylling

쿠키는 브라우저 사용자가 세션 토큰을 원활하게 저장하는 방법입니다. 개발자와 상호 작용하는 경우 매끄럽지 않아도됩니다. "티켓"을 부여하는 공용 연결 서비스를 설정할 수 있으며 개발자는 티켓을 메모리 내 또는 원하는 위치에 유지할 수 있습니다. 나는 실용적인 웹 서비스 경험이 없으며 이런 종류의 것들에 대한 표준 솔루션이있을 것입니다.
— 얌 마르코비치

최종 사용자 인증 및 API 인증에 대한 내 질문에 대한 귀하의 생각은 무엇입니까? 아직 확실하지 않습니다
— Paul Sylling

답변:


7

HTTP 기본 인증을 사용하려면 모든 리소스 요청과 함께 사용자 이름과 비밀번호를 보내야합니다. username : password는 "Basic"으로 시작하는 "Authorization"요청 헤더 base64로 인코딩 된 문자열에 전달됩니다. 모든 http 통신이 (ssl을 통해) 암호화 된 경우 Authorization 헤더의 정보는 정보를 보유 할 가능성이 거의 없으므로 공격자가 쉽게 사용할 수 없습니다.

기본 인증을 사용하는 SSL 암호화 http이면 충분합니다.


2
이것의 예를 제공 할 수 있습니까? 그것은 내가 필요한 것, 바로 지금 막 붙어 ...
— ganders

0

토큰 / 비밀과 함께 OAuth / OpenID가 작동합니까?

최근에 다음 시나리오를 고려했습니다.

  • 웹 애플리케이션 프론트 엔드
  • 기본 REST API
  • REST API에 액세스하는 모바일 디바이스 애플리케이션

간단한 테스트로 다음과 같은 작업을 수행 할 수있었습니다.

  • OAuth를 사용하여 웹 응용 프로그램을 통해 사용자 인증
  • OAuth를 통해 권한 부여 된 REST API로 인해 비밀이 생성되어 클라이언트로 다시 전달됩니다.
  • 그런 다음 모바일 장치는 OAuth를 통해 인증 한 다음 비밀을 통해 REST API에 의해 인증됩니다.

이를 통해 모바일 장치 응용 프로그램은 웹 프런트 엔드 (동일한 계정)를 통해와 동일한 자격 증명으로 인증하고 API에 대한 액세스 권한을 부여 할 수 있습니다.


1
따라서 귀하의 예에서는 사용자 만 인증 중입니다. API (웹 앱, 모바일 앱)를 호출하는 클라이언트는 자신을 인증하지 않습니다. 이론적으로 API가 공개되어 잠재적으로 사용자 이름과 암호를 게시 할 수있는 응용 프로그램은 토큰을 다시 얻을
— 폴 Sylling

사용자가 앱을 통해 인증하고 있으며 앱이 사용자를 대신하여 전화를 겁니다. 인증 프로세스는 토큰을 도출하여 앱이 전달합니다.
— Brendan Green
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.