2014-11-24 3 views
6

У меня есть борьба за то, чтобы это работало, поэтому я создал приложение Rails для адского мира, чтобы попытаться заставить его работать.Аутентификация Shibboleth в Rails

Вот репо с кодом, который не работает: https://github.com/pitosalas/shibtry

Вот что я сделал, начиная с пустого приложения Rails:

  1. я добавил два драгоценных камней в драгоценных файлов:

    gem 'omniauth-shibboleth' 
    gem 'rack-saml' 
    
  2. Я получил Шибболет мета-данные из веб-сайта моего университета и превратили его использованием shib_conv.rb в соответствующий YAML: ./con fig.yml

  3. Я обновляемые маршруты добавляющих get '/auth/:provider/callback', to: 'sessions#create'

  4. Я поставил точку останова в SessionController#create

  5. Я добавил инициализатор: 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 
    
  6. Я добавил инициализатор rack_sam.rb:

    Rails.application.config.middleware.insert_after Rack::ETag, Rack::Saml, 
        { :metadata => "#{Rails.root}/config/metadata.yml"} 
    
  7. Теперь запустите сервер и перейти к http://0.0.0.0:3000/auth/shibboleth и я получаю сообщение об ошибке:

    undefined method `[]' for nil:NilClass' 
    

    , которая восходит к этой линии в стойку-SAML/разное/onelogin_setting.rb линии 13, которая:

    settings.idp_sso_target_url = @metadata['saml2_http_redirect'] 
    

    Другими словами, поиск хэша метаданных для этого ключа. Бывает, что в моем файле metadata.yml этот ключ присутствует, но к тому времени, когда я доберусь до этой строки onelogin_setting.rb 13, @metadata равен нулю (он должен содержать содержимое файла), и, следовательно, этот ключ не существует.

И вот где, на данный момент тропа высыхает.

+0

привет, вы когда-нибудь получали эту работу? я действительно мог бы использовать некоторую помощь, чтобы установить это с моим университетом также. –

+0

Да, я сделал это совершенно по-другому. Я использовал собственный механизм Google, чтобы приложение могло войти в систему. Https://developers.google.com/identity/sign-in/web/ – pitosalas

+0

gotcha, к сожалению, мне нужно сделать это через shibboleth для приложения в моем университете. если у вас есть какие-либо потенциальные подсказки или подсказки о том, как заставить его работать, я все уши. Я также получаю эту ошибку. –

ответ

0

Похоже, вы забыли добавить файл конфигурации в инициализаторе:

Rails.application.config.middleware.insert_after Rack::ETag, Rack::Saml, 
{ 
    :metadata => "#{Rails.root}/config/metadata.yml", 
    :config => "#{Rails.root}/config/rack-saml.yml" 
} 

И настройки saml_idp в стойку-saml.yml должен совпадать с ключом для входа idp_lists в вашем metadata.yml

1

Я обошел Шибболет полностью. Моя цель состояла в том, чтобы разрешить вход в систему аутентификации в университетах специально для того, чтобы студенты могли входить в систему со своим входом для входа в систему, который находится под управлением приложений Google. Это было намного проще: https://developers.google.com/identity/sign-in/web/

+0

, выполнив это, вы все еще можете получить метаданные или данные профиля учащегося? –

+1

Да, некоторые, в зависимости от того, что позволяет колледж – pitosalas

 Смежные вопросы

  • Нет связанных вопросов^_^