2012-06-02 1 views
5

Google은 조직 내에서만 배포하려는 앱의 엔터프라이즈 배포를 보유하고 있습니다.공개 된 웹 사이트에서 oauth를 사용하여 iOS 엔터프라이즈 배포를 보호하는 방법은 무엇입니까?

올바른 장소를 가리키는 ipa 파일과 plist를 만들고 url : itms-services : //? action = download & url = {우리의 plist에 대한 링크}로 html 페이지를 만들었습니다.

그러나 우리의 문제는 배포 프로세스를 안전하게 유지하는 것입니다. 회사에서 소유 한 iPads 직원이 이동 중에 앱을 다운로드 할 수 있기를 바랍니다 (이동성이 높음). 따라서 우리는 oauth 서비스를 통해 로그인해야하는 공개 웹 사이트에 plist 및 앱을 배치하려고합니다.

우리의 문제는 앱과 plist의 URL에 대한 인증이 필요할 경우 itms-services : // url이 더 이상 작동하지 않는다는 것입니다. 사용자가 itms-services 링크를 클릭하면 plist (로그인으로 리디렉션 됨)에 대한 인증되지 않은 요청이 표시되고이어서 "{hostname}에 연결할 수 없습니다"라는 메시지가 표시됩니다.

현재이 작업을 볼 수있는 유일한 방법은 ipa 및 plist 파일의 인증을 확인하지 않는 것입니다. 이는 우리의 plist 파일에 대한 URL을 추측하는 누군가가 자신의 itms-services 링크를 만들고 승인없이 앱을 다운로드 할 수 있으며, 사실상 Apple과의 계약을 위반하여 직원들에게만 배포 할 수 있음을 의미합니다.

내 질문에 - 그렇다면 어떻게 ipa 및 plist 파일을 공개하지 않는 itms-services 링크를 만들 수 있습니까? 관련성이있는 경우 웹 사이트는 nodejs를 사용하여 제작되었으며 앱은 PhoneGap 앱입니다.

답변

7

이 문제에 대한 해결책을 찾았습니다.

iOS 설치 프로세스에 자격 증명을 입력 할 기회가 없기 때문에 oauth 인증을 사용할 수 없습니다.

대신 사용자가 itms-services : // 링크를 표시하는 페이지를 요청하면 해당 사용자에게 고유 한 문자열을 생성하고 AES-256을 사용하여 암호화 한 다음 데이터베이스에 저장합니다.

다음 URL은 itms-services://{url to plist}/{encryptedString}이됩니다. 쿼리 문자열을 사용해 보았지만 iOS 설치 도구가이를 전달하지 못하는 것처럼 보입니다.

설치 도구가 Plist를 요청하면 데이터베이스에 대해 암호화 된 문자열을 확인하고 plist를 열고 ip3 파일에 대한 URL을 {url to ipa}/{encryptedString}으로 다시 작성합니다.

아주 잘 작동하는 것 같습니다. 현재 내가 생각할 수있는 유일한 문제는 URL을 액세스 할 수없는 사람과 합법적 인 사용자로 공개적으로 공유 할 수 있다는 것입니다. URL이 시간에 민감한 지 (예 : 5 분만 사용 가능) 확인하여이 문제를 해결할 수 있다고 생각합니다.

마지막으로 올바른 암호화 문자열이없는 plist 또는 ipa에 대한 요청은 거부됩니다.

누군가에게 유용하기를 바랍니다.

+3

그래서 그것은 거의 해결책입니다. 나는 이것이 itms-services : // 프로토콜에 심각한 문제라고 생각한다. 확실히 인증을 지원해야합니다. – xdumaine