ruby - Rails 中的 Shibboleth 身份验证

标签 ruby shibboleth

我很难让它工作,所以我创建了一个 hell 世界的 Rails 应用程序来尝试让它工作。

这是代码无效的代码库:https://github.com/pitosalas/shibtry

这是我从一个空的 Rails 应用程序开始所做的:

  1. 我在 gem 文件中添加了两个 gem:

    gem 'omniauth-shibboleth'
    gem 'rack-saml'
    
  2. 我从我大学的网站上获取了 shibboleth 元数据,并使用 shib_conv.rb 将其转换为相应的 YAML:./config.yml

  3. 我更新了路由,将 get '/auth/:provider/callback', to: 'sessions#create'

  4. 我在 SessionController#create

  5. 下了一个断点
  6. 我添加了初始值设定项:omniauth.rb:

    Rails.application.config.middleware.use OmniAuth::Builder do
      provider :shibboleth, {
        :shib_session_id_field     => "Shib-Session-ID",
        :shib_application_id_field => "Shib-Application-ID",
        :debug                     => true,
        :extra_fields => [
          :"unscoped-affiliation",
          :entitlement
        ]
      }
    end
    
  7. 我添加了 rack_sam.rb 初始值设定项:

    Rails.application.config.middleware.insert_after Rack::ETag, Rack::Saml,
      { :metadata => "#{Rails.root}/config/metadata.yml"}
    
  8. 现在,运行服务器并转到 http://0.0.0.0:3000/auth/shibboleth,我收到一个错误:

    undefined method `[]' for nil:NilClass'
    

    可以追溯到 rack-saml/misc/onelogin_setting.rb 第 13 行中的这一行:

    settings.idp_sso_target_url = @metadata['saml2_http_redirect']
    

    换句话说,寻找该键的元数据散列。碰巧在我的 metadata.yml 文件中存在该 key ,但是当我到达这个 onelogin_setting.rb 第 13 行时,@metadata 为 nil(它应该包含文件的内容)并且因此该 key 不存在。

现在,这就是踪迹枯竭的地方。

最佳答案

我完全绕过了 Shibboleth。我的目标是允许登录到我的大学身份验证系统,特别是允许学生使用他们的学生登录名登录,该系统由谷歌应用程序提供。所以这要容易得多:https://developers.google.com/identity/sign-in/web/

关于ruby - Rails 中的 Shibboleth 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27115688/

相关文章:

ruby - GTK - 不要在选择/悬停时突出显示按钮

mysql - `require' : Incorrect MySQL client library version

mysql - 按年分组、按月/年分组

active-directory - Web 应用程序的单点登录

java - 如何使用 SAML 和 Shibboleth 实现或集成单点登录

mysql - Snow Leopard + Ruby 1.9.1 + MySQL Gem = 大问题

ruby - 用 Ruby 做原生 GUI

cas - Shibboleth 和 CAS 之间的区别?

shibboleth - 错误消息 : No peer endpoint available to which to send SAML response

apache - Tomcat 中的 Shibboleth session 验证