3

アプリケーションのWeb認証にDevisegemを使用しています。

サインイン/サインアッププロセスを含む、アプリケーション用のモバイルアプリを作成しようとしています。

ユーザーにサインインし、モバイルアプリからユーザーが行った各呼び出しを認証するために使用する正しい方法は何ですか?

次の戦略のどれが正しいですか?(より安全にするためにどの方法に従うべきかわかりません)

ここに画像の説明を入力してください

注:上の画像はhttp://i.stack.imgur.com/I13uT.pngで見ることができます(より明確になります)

参考:モバイルアプリの開発にTitaniumを使用しており、バックエンドサーバーでRailsアプリを実行しています

4

2 に答える 2

3

モデル#1は安全ではありません。ユーザーがまだ本人であるかどうかを検証するために、後続のリクエストでいかなる種類の認証も受けていません。

あなたが本当に知りたいと思うのは、ログインした後、ユーザーが本人であるかどうかを確認するための最良の方法は何ですか。これについては以前に回答しました。iOSアプリケーションへのRails /DeviseAuthenticationの公開と同じ回答です。ここに適用されます。

Deviseでトークン認証を使用すると、モデル#2と一致します。また、ユーザー名とパスワードを保存してすべてのリクエストで再利用するのではなく、ユーザー名とパスワードをトークンと交換するため、最も安全です。

于 2012-09-28T17:15:27.807 に答える
2

後続のリクエストはいずれも署名されていないため、#1がどのように安全であるかはまったくわかりません。誰かがあなたのアプリのファイル構造を知っていれば、その方法でアクセスできますよね?

Deviseを使用すると、Userモデルに属性を設定して、トークンを介してユーザーを認証できるようにすることができます。

class User < ActiveRecord::Base
  devise :token_authenticatable
  # there are other details and options on this, but this is the relevant piece
end

before_filter :authenticate_user!各コントローラーで、最初に含めることでユーザーが認証されていることを確認することもできます。

class PostsController < ActionController::Base
  before_filter :authenticate_user!
end

モバイルアプリからリクエストを行う場合は、リクエストにauth_tokenを含めて、Railsアプリが応答する前に認証できるようにします。

認証だけでなく、 CanCanのような承認を処理することにも興味があるかもしれません。

于 2012-09-28T17:32:19.423 に答える