2

私は現在、Rails アプリから提供される RESTful API (JSON、XML) インターフェイス、2 つ目の Rails アプリでサポートされる Backbone.js アプリケーション、および Android の 3 つの部分で構成される Web アプリケーションのアーキテクチャを設計およびプロトタイプ作成しています。 API 経由でデータにアクセスするアプリケーション。

ユーザーを認証する (ログイン ページにリダイレクトする) 通常のプロセスは Backbone.js アプリケーションで機能しますが、Android アプリケーションからの単一のアクセス トークンを使用してユーザーを認証したいと考えています。初めて Android アプリを使用する際に、ユーザー名とパスワードが必要であり、CAS サーバーから、事前に生成された単一のアクセス トークンを含む追加情報が返されることがわかります。私がうまくいかないのは、クライアントからのリクエストとともに単一のアクセストークンを渡し、ログインページなどにリダイレクトせずにCASに対して認証する方法です.

私が知る必要があるのは、これがCASで可能かどうか、または同じ結果を達成するために使用できる「CASの方法」である方法があるかどうかです。

Devise と CAS プラグイン devise_cas_authenticatable を試してみましたが、これは Devise の最新バージョンでは壊れているようです。理想的には、すべて CAS に接続された単一アクセス トークン生成の独自の実装でソーサリーを使用したいと考えています。私は CAS とそれができることについて非常に新しいので、最初に何ができるかを調べようとしています。次に、コーディングできる新しい開発が必要な場合は、rubycas-client とソーサリーに貢献します。 .

前もって感謝します

4

1 に答える 1

1

Proxy Granting Tokens (セクション 3.3)を探していると思います。これにより、あるアプリケーションが有効な認証を別のアプリケーションにプロキシできるようになります。RubyCAS クライアントは、次の方法でこれをサポートします。

class ApplicationController < ActionController::Base
  before_filter :authenticate!

protected

  def authenticate!
    # This triggers RubyCAS client to request a proxy granting ticket
    CASClient::Frameworks::Rails::Filter.client.proxy_callback_url = "myservice.com" 
    CASClient::Frameworks::Rails::Filter.filter(self)

    if session[:cas_pgt]
      # You will want to pass this as a URL param to your remote service
      # whenever you call it. We store it on our base ActiveResource model
      # and automatically append to the url params of all requests.
    end


    # Username is available in session[:cas_user]
  end
end

このソリューションはデバイスを使用しません。

于 2012-07-10T17:57:13.170 に答える