2009-06-30 1 views
4

모바일 장치와 웹 서비스 간의 연결을 보호하기위한 프로토콜을 찾고 있습니다. 모바일 장치 만 웹 서비스에서 작업을 수행 할 수 있도록하고 그 반대도 마찬가지입니다. 데이터를 암호화 할 필요가 없습니다.모바일 장치와 웹 서비스 간의 연결을 보호하기위한 프로토콜?

Oauth는 알고 있지만 3 가지 엔티티 (Server, Consumer 및 Auth)가있는 경우 연결 보안에 더 많이 사용되는 것으로 보입니다. 여기에서, 소비자와 사용자는 같은 사람입니다.

사용자가 로그인하고 Oauth의 경우와 같이 액세스 토큰을 인증하지 않아도되는 간단한 프로토콜이 있습니까?

다른 plateforms에서 사용해야하므로 프로토콜을 iPhone 및 PHP에서 사용할 수 있어야합니다.

답변

1

해결책을 찾았습니다. "2 legged Oauth"프로토콜을 사용하십시오.

이 방법은 표준에 충실합니다. 바퀴를 다시 열 필요가 없으며 안전한 솔루션이 있습니다.

소비자와 사용자가 동일하기 때문에 소비자가 사용자로 로그인했을 때 소비자가 묻는 "요청 토큰"을 자동으로 승인합니다.

내가하고 있어요 것은 : SSL에서

  • : 나는 사용자로 로그인하고 서버에 소비자 키/비밀을 요청
  • 서버 내 소비자의 키를 돌려줘/비밀
  • SSL에서
  • : 나는 사용자로 로그인 내 소비자 키로 "요청 토큰을"요청/
  • 서버 비밀은 자동으로 요청 토큰
  • SSL없이 권한을 부여 그래서 사용자 해요 인식 : 나는 "는 질문 액세스 토큰 "을 내 "요청 토큰"
  • 이 서버는 토큰 다시
  • 나는 당신의 대답에 대한 요청 안전하게
0

HTTPS 연결을 통해 공유 암호/단방향 암호화 해시를 사용하여 직접 롤백 할 수 있습니다.

그런 다음 특정 장치인지 확인하려면 장치의 해시 + 타임 스탬프 + 장치의 공유 암호를 매개 변수로 서버에 전달하고 해당 장치의 해시를 확인하십시오. PHP 쪽.

+0

감사 존을 수행하는 데 사용하는 나에게 내 액세스 권한을 부여, 나는 그것이 매우 정직하고 생각합니다. 솔루션에는 누군가가 요청을 포착하여 재생하지 못하도록하는 nonce도 포함되어야합니다. – Martin

3

'보안'이란 의미를 분명히해야합니다. 정확히 무엇에 대한 보안? 너 무슨 걱정이야?

즉, https (SSL을 통한 HTTP)는 좋은 출발점이며,이를 통해 웹 사이트를 기기 (또는 브라우저)에 인증 할 수 있으며 유비쿼터스화할 수 있습니다.

기기를 인증하려면 좀 더 까다 롭습니다. 공유 비밀 (임의의 숫자)을 생성하고 저장할 수 있으며, 처음 사이트에 접속할 때 GET/POST에 제공하면 .... 여러 가지 변형이 있지만 단순한 공유 비밀은 모두 다른 것은 아마 과잉이다. 이렇게하면 다음에 연결할 때 동일한 장치가 다시 연결된다는 것을 인식 할 수 있습니다. 기기가 로그인 할 때 사용하는 비밀번호와 같다고 생각해보십시오 (단, 단어 일 필요는 없으며 가능하지 않아야합니다).

이 문제는 프로그램을 삭제하면 그 비밀이 상실되고 정확히 무엇을 원 하느냐에 따라 프로그램이 다음 번에 같은 장치에서 실행될 때 문제가 될 수 있습니다. 새로운 비밀을 밝힐 필요가 있습니다. 이 경우에는이 시간을 연결하는 장치가 이전에 연결 한 장치와 동일한 지 알 수 없습니다. 필요하다면, 일종의 리셋 메커니즘을 사용해야 할 것입니다.이 메커니즘은하기 어렵고, 장치가 아닌 사용자 인증에 해당합니다.

아이폰은 고유 한 식별자가 있지만 실제로는 비밀이 아니며 제공된 장치가 연결되어 있다는 증거를 실제로 제공하지 않습니다. 그것을 제공하는 데 전혀 해가되지는 않지만, 신원을 증명하는 것보다는 '나는 장치 foo'라는 주장과 더 비슷합니다. 로그인의 사용자 이름 부분처럼 생각하면 공유 비밀이 필요합니다.

관련 문제