2013-02-07 1 views
1

Windows Phone 및 Android 용 앱을 만들고 있습니다. 그래서 지금은 둘 다 사용할 수있는 webapi 건물,하지만 난 그것을 som 다른 보안 응용 프로그램을 사용할 수있는 다음 그것을 확보하고 싶습니다. 어떻게해야합니까? 아무도 내 애플 리케이션이 이러한 API에 액세스하려고합니다.내 앱용 온라인 API를 확보하려면 어떻게해야합니까?

OAuth를 구현하고 싶지 않습니다.

내가 생각하고 두 가지 시나리오를 가지고 :

먼저 (내가 이름을 저장하고 클라이언트에서 암호를 해시) :

  • 기본-인증을 HTTPS/SSL을 , thats. 둘째

는 (I 클라이언트에서 accesstoken 저장) :

  • 기본-인증을 HTTPS/SSL 액세스 토큰을받을 수 있습니다.
  • 액세스 토큰을 얻으려면 사용자는 클라이언트와 서버가 모두 클라이언트를 알고 있음을 확인하는 토큰 요청을 보내야합니다. accesstoken 액세스를 확인하기 위해 함께 보낼 수있는 API에 대한 각 호출

문제 나는 두 번째 방법은 사람 어디 그들은이를 얻을 경우 서버가 클라이언트에 accesstoken 전송하는 것입니다 참조로 사용자의 액세스 권한을 갖습니다.

어떻게 현실 세계에서 이루어 집니까? 기본-인증을 HTTPS

  • 가에 암호 해시 저장 클라이언트에

    • 저장 사용자 이름과 비밀번호 :

  • 답변

    1

    당신은 약간의 먼저의 수정을 사용할 수 있습니다 클라이언트가 해시를 전송하고 해시와 데이터베이스에서 비교하는 것은 일반 텍스트 파스를 저장하는 것과 같습니다. 해시가 암호이되기 때문에 검을 데이터베이스에 저장하십시오. 따라서 앱은 사람이하는 것처럼 사용자 이름과 비밀번호로 인증해야합니다.

    하지만 두 번째 접근 방법에 대한 우려도 있습니다. 누군가가 메시지를 가로 채면, 그는 당신의 신임장을 가지고 있습니다.

    보다 안전한 솔루션은 HMAC 인증입니다. 이제 우리는 "현실 세계"를 말하고 있습니다.

    • 사용자가 보유하고있는 서버 및 클라이언트
    • (요청 방법, URI 파라미터와 타임 스탬프를 포함하는 별개의 문자열로 변환) 각 요청 정규화 도착
    • 에 저장된 비밀 키 정규화 된 요청은 HMAC로 해시되고 해시 및 사용자 ID는 서버의 HTTP Authorization 헤더
    • 에 전달되고 동일한 알고리즘 (HTTP Date 헤더의 타임 스탬프가있는)을 사용하여 해시가 생성되고 보내진 해시 결과가 동일한 경우
    • , 요청이

    을 인증 예는 Amazon S3 REST API입니다 - 링크 된 문서가 자신의 API를 위해 그것을 구현하는 방법도 좋은 예입니다.

    관련 문제