2012-02-29 7 views
6

モバイルクライアントのDjangoにRESTインタフェースを追加しようとしています。モバイルクライアントはHTTPS経由でJSONを使用します。私はモバイル機器でこれを達成するための「最良の」方法を見つけることができませんでした。検索すると、#1は#2よりも有利です。モバイルアプリケーション用のREST APIを保護するにはどうすればよいですか?

  1. HTTP認証を使用してCookieベースのセッションを確立します。すべてのトランザクションはHTTP経由で行われ、JSONメッセージにはコマンドまたはデータのみが含まれます。
  2. すべてのトランザクションについて、各JSON msg内でユーザー名とパスワード(暗号化)を渡し、Cookieベースのセッションには依存しません。

答えて

1

ナンバー2が望ましいです。自分でロールするのではなく、できるだけOAuth認証を使用することをおすすめします。クライアントライブラリとサーバーライブラリは、ほとんどのプラットフォームですぐに使用できます。詳細については、http://oauth.netを参照してください。

+0

このテーマのドキュメント/パターンをデザインするためのリンクはありますか? – QED

+0

私は間違いなく、上記のOath.net Webサイトの「開始」セクションから始めます。今日利用可能なOAuth情報の多くにリンクしています。 –

+0

おっと、私はRESTを意味しました – QED

3

OAuthは、これらのサービスを他の開発者(エンドユーザーの代わりにアクセスするユーザー)が利用できるようにしたい場合を除き、過剰な人です。オプション2を使用する方が良いですが、パスワード認証ではなくダイジェスト認証を使用することをお勧めします。それをSSLと組み合わせると、間違いなく良いことになります。

0

実際の暗号化を使用していて、base64や自国難読化アルゴリズムではない限り、#2はうまくやっています。また、APIキーをユーザー名にバインドしている多くの企業のルートを考慮する必要があります。

+0

SSLですべてが送信される場合、暗号化はまだ必要ですか? – ewhitt

+0

SSLは暗号化されています。通信スタックの異なるレイヤーでの暗号化だけです.SSLは、特定のメッセージの選択されたコンテンツではなく、通信チャネル全体を暗号化します。したがって、一般的にはより高価です。両方を行うことは、リソースの無駄かもしれません。 – QED

8

ログインコールで最初にユーザー名とパスワードを送信することをお勧めします。 JSONはauthTokenまたはaccessTokenを返信し、モバイルデバイスはそれ以降のすべての呼び出しで返信します。次に、authTokenが有効であることを確認します。これは多くのAPIのアプローチです。データベースでは、ログインしたユーザーアカウントにAPIキーをバインドします。

+0

ありがとうございます。私はこのアプローチが好きです。このトランケーションタイプには、私がGoogleでさらに偶然できる名前や何かがありますか? – ewhitt

+0

@ewhittトークンベースの認証とみなされますhttp://upcoming.yahoo.com/services/api/token_auth.php – Bot

関連する問題