2012-03-25 4 views
0

すぐに使えるアプリケーションでユーザー認証を実装する最善の方法について再検討しています。Webサービスを使用してリモートDBに対してユーザー認証を実装する

これは私がこれまで持っているものです。

  • リモートサーバ上のデスクトップ(Windowsの場合)アプリケーション。そのアプリケーションはブラウザでローカルにアクセスされます(すべてを保存するためのWebコンソールとMS SQL Serverがあります)。
  • このアプリケーションは、DBに保存されているローカルクレジットカードで使用されます。

これは私がaccompllishしたいものです。

  • は私のアプリからのSQL ServerのDB上のいくつかの情報へのアクセスを提供します。そのアクセス権は、ユーザーが有効な資格情報を持って自分自身を所有した後に付与する必要があります。

これは私がこれまで知っているものです:私のPHPのWebサービスを作成し、JSONを使用してDBから情報を照会する方法

  • AFNetworkingライブラリを使用して情報を取得する方法。
  • その情報をアプリに表示する方法。

私が知りませんが、iOSからユーザー認証を実装するのに最適な方法です。ユーザー名とパスワードを送信する必要がありますか?ハッシュを送るべきですか?ハンドシェイクを確保する方法はありますか?

私は以前の経験から得たアドバイス、ヒント、またはお勧めを感謝します。

私はそれを実装するだけではなく、可能な限りそれをやりたいと思っています。

答えて

2

ここに書かれている書籍がありますので、ここで与えられた回答は不完全である必要があります。だから、実際に働く最もシンプルなことの概要を教えてあげます。このようなサービスを確保するための最小限のものは、SSL/TLSで保護されたHTTP基本認証(AFNetworkingとPHPの両方でネイティブにサポートされる)を使用することです。

基本認証は、資格情報を標準的な方法でハッシュ(暗号化しない)し、要求のヘッダーの1つとして送信する方法です(Authorization: Basic <Base64-encoded concatenated credentials>)。 AFNetworkingは、AFHTTPClientクラスの一部としてこれをサポートしています(-setAuthorizationHeaderWithUsername:password:メソッド参照)。 PHPは、認証ヘッダーをサーバー変数($_SERVER['PHP_AUTH_USER']$_SERVER['PHP_AUTH_PW'])のペアに解析します。ここから、ユーザーデータベースに対してユーザー名とパスワードの組み合わせを確認し、リソースへのアクセスを許可または禁止します。

この手法とHTTPSを組み合わせることが重要な理由は、資格情報のハッシュが簡単に元に戻せることです。基本的にはパスワードをクリアな状態で送信しているため、トラフィックを聴いている人は誰でもそのパスワードを取得できます。証明書を設定し、セキュリティで保護されたチャネル経由で要求を送信すると、この種の脆弱性が防止されます。

もう少し洗練されたものにしたい場合は、2足のOAuthもこのシナリオの実行可能な選択肢です。

+0

すばらしい答えをありがとう。私はそれに取り組んでいきます。 –

関連する問題