android - 通过 RubyCAS 使用单个访问 token 访问 Rails API

标签 android ruby-on-rails cas rubycas sorcery

我目前正在为一个由三部分组成的 Web 应用程序架构设计和原型(prototype)设计,一个由 Rails 应用程序提供的 Restful API(JSON、XML)接口(interface),一个由第二个 Rails 应用程序支持的 Backbone.js 应用程序,以及通过 API 访问数据的 Android 应用程序。

虽然通常的用户身份验证过程(重定向到登录页面)适用于 Backbone.js 应用程序,但我想使用来自 Android 应用程序的单个访问 token 来验证用户身份。我可以看到首次使用 Android 应用程序时如何需要用户名和密码,从 CAS 服务器传回包含预生成的单一访问 token 的附加信息。我无法解决的是如何将单一访问 token 与来自客户端的请求一起传递,并在不重定向到登录页面等的情况下针对 CAS 进行身份验证。

我需要知道的是,这是否可以通过 CAS 实现,或者是否有一种方法更像“CAS 方式”,我可以使用它来获得相同的结果?

我已经尝试使用 Devise 和 CAS 插件 devise_cas_authenticatable 但这似乎被最新版本的 Devise 打破了。理想情况下,我想在我自己的单一访问 token 生成实现中使用魔法,所有这些都连接到 CAS。我对 CAS 及其功能还很陌生,所以我首先尝试弄清楚什么是可能的,然后如果需要任何我能够编写代码的新开发,我会回馈给 ruby​​cas-client 和 sorcery .

提前致谢

最佳答案

我相信您正在寻找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

此解决方案不使用设计。

关于android - 通过 RubyCAS 使用单个访问 token 访问 Rails API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10644683/

相关文章:

java - winzipaes 在 Android 上解密 10 MB 的文件很慢

java - 在内部存储中存储可绘制对象或位图

ASP.NET - 信任级别 = 完全?

java - 我应该使用哪个 CAS 服务器?

android - FIRESTORE 持久数据

android - 如何将 Material Design 效果添加到 Android View ?

mysql - 如何将csv标题映射到rails中的sql字段名称?

ssl - 新证书 - PKIX 路径构建失败

ruby-on-rails - 如何调试测试套件中的 "database does not exist"错误?

ruby-on-rails - Rails + 延迟作业 : Where is the correct place to store custom job classes?