2011-12-01 3 views
1

Pylons 프레임 워크를 사용하여 Python에서 RESTful API를 작성하고 Apache2 및 mod_wsgi를 제공하며 iPhone 앱에 연결하려고합니다. HTTPS, SSL 및 인증 기관에 대한 경험이 거의 없으며 API 보안에 대해 궁금합니다.iPhone 앱을 안전한 RESTful API에 연결하고 있습니까?

API가 HTTPS를 통해 제공되고 있는지 어떻게 확인합니까? 예 : this 예와 같이 SSL 인증서를 설정해야합니까? iOS (예 : CACert.org)에서 인정하지 않은 기관 (주로 무료이기 때문에)을 통해 SSL 인증서에 서명하면 내 앱이 내 서버와 통신하는 데 영향을 줍니까? 다른 사람들이 웹 기반 RESTful API와 iPhone 응용 프로그램 간의 통신 보안 문제를 어떻게 해결 했습니까?

또한 OAuth는이 모든 것에 어떻게 적합합니까?

답변

1

이것은 실제로 귀하의 API를 "보안"한다는 의미에 달려 있습니다.

A) 인증되지 않은 사용자가 API에 액세스 할 수 없도록 보안을 설정하거나 B) 클라이언트와 서버간에 앞뒤로 전달되는 데이터에 대해 일정 수준의 암호화를 원한다는 의미입니까? ?

답이 B 또는 둘 모두라면 SSL 인증서를 받고 서버에 설치해야합니다. 대부분의 인증 기관에는이를 수행하는 방법에 대한 지침이 있습니다.

"iOS에서 인정하지 않는 기관"이 무슨 뜻인지 잘 모르겠지만 인정 된 기관의 인증서를 얻기 위해 반죽을 작성하는 것이 좋습니다. 무료 인증서를 제공하는 경우에도 CACert.org를 사용해도 문제가되지 않습니다. 영향을받는 서버와 클라이언트 간의 통신 기능면에서 어떤 문제가 있는지 실제로 알 수 없습니다.

인증되지 않은 클라이언트로부터 API를 보호하는 측면에서 OAuth를 확인할 수 있습니다 (http://oauth.net/ 참조). OAuth를위한 다양한 Python 라이브러리가 있습니다. 예를 들어 https://github.com/simplegeo/python-oauth2을 확인하십시오. 고려해야 할 유일한 점은 OAuth를 구현할 때 합리적인 학습 곡선이 있다는 것입니다.

위의 두 번째 링크는 간단한 OAuth 클라이언트를 보여 주며 세 발의 인증 프로세스에 대한 예제 코드도 제공합니다.

+0

OAuth를 작동 시키려면 SSL이 전혀 필요하지 않습니까? – john

+0

아니요, SSL 자체가 필요하지 않습니다. 실제로는 API를 보호한다는 의미에 달려 있습니다. 앞서 언급했듯이 OAuth는 권한이없는 클라이언트가 API에 액세스하는 것을 방지합니다. 그러나 SSL이 없으면 클라이언트와 서버 간의 통신이 암호화되지 않습니다. 어쩌면 OAuth/SSL 조합을 찾고 있을까요? – stephenmuss

1

iOS에서 인증서를 프로그래밍 방식으로 처리 할 수 ​​있습니다. 코드에서 지문을 인식하는 한 자체 서명 된 인증서를 사용할 수도 있습니다. 내 머리 꼭대기에서 세부 사항을 기억할 수는 없지만 didReceiveAuthenticationChallenge를 사용하여이 작업을 수행 할 수 있다는 것을 알고 있습니다.

장기적으로 볼 때 인증서를 구입하는 것이 더 간단합니다 (cacert.org는하지 않습니다).

관련 문제