인증이 필요한 REST API를 개발 중입니다. 인증 자체가 HTTP를 통한 외부 웹 서비스를 통해 발생하기 때문에 인증 서비스를 반복적으로 호출하지 않도록 토큰을 분배 할 것이라고 생각했습니다. 첫 번째 질문에 깔끔하게 연결됩니다.
클라이언트가 각 요청에서 HTTP 기본 인증을 사용하고 인증 서비스 서버 측에 대한 호출을 캐싱하도록 요구하는 것보다 더 좋은가요?
기본 인증 솔루션은 콘텐츠 요청이 시작되기 전에 서버에 대한 전체 왕복이 필요하지 않다는 장점이 있습니다. 토큰은 잠재적으로 범위가 더 유연 할 수 있지만 (즉, 특정 리소스 또는 작업에 대한 권한 만 부여), 내 간단한 사용 사례보다 OAuth 컨텍스트에 더 적합 해 보입니다.
현재 토큰은 다음과 같이 획득됩니다.
curl -X POST localhost/token --data "api_key=81169d80...
&verifier=2f5ae51a...
×tamp=1234567
&user=foo
&pass=bar"
는 api_key
, timestamp
및 verifier
모든 요청에 의해 요구된다. "검증 자"는 다음에 의해 반환됩니다.
sha1(timestamp + api_key + shared_secret)
내 의도는 알려진 당사자의 통화 만 허용하고 통화가 그대로 재사용되는 것을 방지하는 것입니다.
이것으로 충분합니까? 언더 킬? 지나침?
토큰을 가지고 클라이언트는 리소스를 얻을 수 있습니다.
curl localhost/posts?api_key=81169d80...
&verifier=81169d80...
&token=9fUyas64...
×tamp=1234567
가능한 가장 간단한 호출의 경우 이것은 끔찍하게 장황하게 보입니다. shared_secret
유언장이 (최소한) iOS 응용 프로그램에 포함되어 있다는 점을 고려할 때이 응용 프로그램에서 추출 할 수 있다고 가정 할 때 잘못된 보안 감각 이상의 것을 제공합니까?