8

Ruby on Rails バックエンドと通信する iPhone アプリケーションを構築しています。Ruby on Rails アプリケーションは、Web ユーザーにもサービスを提供します。restful_authentication プラグインは、迅速でカスタマイズ可能なユーザー認証を提供する優れた方法です。ただし、iPhone アプリケーションのユーザーには、電話の一意の識別子 ([[UIDevice device] uniqueIdentifier]) によって自動的に作成されたアカウントを新しい列に格納してもらいたいと思います。その後、ユーザーがユーザー名/パスワードを作成する準備が整うと、アカウントはユーザー名とパスワードを含むように更新され、iPhone の一意の識別子はそのまま残ります。ユーザー名/パスワードを設定するまで、ユーザーは Web サイトにアクセスできないようにする必要があります。ただし、アプリケーションは ID を使用して自分自身を認証できるため、iPhone アプリケーションを使用することはできます。

これを行うために restful_authentication を変更する最良の方法は何ですか? プラグインを作成しますか? または、生成されたコードを変更しますか?

AuthLogic などの代替フレームワークについてはどうですか。iPhone が生成された認証トークンを UUID にロックできるようにし、ユーザーが後でユーザー名/パスワードを作成できるようにする最善の方法は何ですか?

4

4 に答える 4

6

電話識別子は秘密ではなく、おそらく推測可能/予測可能であるため、認証に電話識別子だけを使用するべきではないと思います。誰かがあなたの Web アプリをハッキングしたい場合、あなたのコードを使用する必要はないことを忘れないでください。彼らは単にデバイス ID を推測し、任意の Web クライアントを使用してユーザー データをいじろうとすることができます。

デバイス ID はユーザー名と同様に扱う必要があります。これは識別用であり、認証用ではありません。ユーザーにパスワードを選択してもらうか、ランダム コードを自動的に生成して、それを使用することをお勧めします。次に、デバイス ID とこのパスワード/コードを送信して、最初にデバイスを登録し、次にデバイスを認証します。

また、一部のユーザーは複数のデバイスを持っていることも予想できます。最終的に 1 つを交換するか、4 台の iPhone を持ち歩く Stephen Fry のような人を手に入れるかのどちらかです。これに対処するには、restful_authentication を 2 回インスタンス化する方法を探すことをお勧めします。1 回目はユーザー認証用、2 回目はデバイス認証用です。このプラグインを使用したことはありませんが、これを実現するには、別のテーブル パラメーターを使用する必要があるだけだと思います。次に、アプリケーション ロジックで、ユーザーが複数のデバイスを自分のアカウントに関連付けられるようにします。

これを安全に行うには、デバイスから実行するか、デバイスにランダムなコードを表示させ、それを Web アプリに入力して、デバイスを所有していることを証明します (これは実際よりも面倒に聞こえます - Apple が使用するのと同じプロセスです) itunes、Apple TV、およびリモート アプリで (彼らがどのようにそれを行っているかを見てください)、ユーザーにとってそれほど驚くべきことではありません)。

(また、ランダムなパスワードを生成するときは、暗号乱数ジェネレーターをベースとして使用することを確認してください。これにはおそらく iPhone API があります。そうしないと、パスワードが予測可能になる可能性があります)。

于 2008-12-14T01:27:53.660 に答える
0

Authlogicのような別の認証スキームを使用しようとしましたか?私はrestful_authenticationがかなり煩わしいことに気づきました(私はbortを使用してだましましたが)。

于 2008-12-09T14:36:44.927 に答える
0

UDID と、UDID + サイト全体で定義されたソルトを使用して生成されたランダムなパスワードを使用することについてどう思いますか?

何かのようなもの:

salt = 'afG553Dvbf3'

udid = '1234567890'
pass = Digest::MD5.hexdigest(udid + salt)

次回の接続時に備えて、そのパスワードを iPhone に送信します。

于 2010-04-03T02:47:20.823 に答える