2012-05-17 3 views
2

현재 Rails 앱에서 제공하는 Restful API (JSON, XML) 인터페이스 인 Backbone의 세 부분으로 구성된 웹 애플리케이션 용 아키텍처를 설계하고 프로토 타입을 작성 중입니다. 두 번째 Rails 앱이 지원하는 js 애플리케이션 및 API를 통해 데이터에 액세스하는 Android 애플리케이션.RubyCAS를 통해 단일 액세스 토큰을 사용하여 Rails API에 액세스

Backbone.js 응용 프로그램에 대한 일반적인 인증 프로세스 (로그인 페이지로 리디렉션)는 Android 응용 프로그램의 단일 액세스 토큰을 사용하여 사용자를 인증하려고합니다. 처음 사용했을 때 안드로이드 앱이 미리 생성 된 단일 액세스 토큰을 포함하는 추가 정보를 CAS 서버에서 되돌려 보내는 방식으로 사용자 이름과 암호를 요구하는 방법을 알 수 있습니다. 내가 해결할 수없는 것은 클라이언트의 요청과 함께 단일 액세스 토큰을 전달하고 로그인 페이지 등으로 리디렉션하지 않고 CAS에 대해 인증 한 방법입니다.

내가 알아야 할 것은 이것이 가능한지 여부입니다 CAS를 사용하거나 동일한 결과를 얻는 데 사용할 수있는 "CAS 방식"이 더 좋은 방법이 있습니까?

나는 Devise와 CAS 플러그인 인 devise_cas_authenticatable을 실험했지만, 이것은 Devise의 최신 버전에서 깨진 것 같습니다. 이상적으로는 단일 액세스 토큰 생성에 대한 내 자신의 구현으로 마법을 사용하고 싶습니다. 모두 CAS에 연결됩니다. 저는 CAS에 매우 익숙합니다. 그래서 가능한 일을 먼저 해본 후 Rubycas-client와 Sorcery에 다시 기여할 것입니다. 새로운 개발이 필요하다면 코드를 작성할 수 있습니다. . 사전

+0

또한 캐쉬 인증이 레일 5에서 작동하지 않는 것으로 나타났습니다. –

답변

0

에서

덕분에 나는 당신이 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 

이 솔루션은 devise를 사용하지 않습니다.

관련 문제