2017-06-06 9 views
8

Próbuję skonfigurować integrację SSO (Single Sign-On) z OpenProject za pomocą wtyczki OpenProject OmniAuth SAML Single-Sign On. Skonfigurowałem go z odpowiednimi szczegółami. Wygenerowano metadane i zarejestrowano je za pomocą IDP zasilanego przez Shibboleth. Wtyczka pokazuje dodatkowy przycisk logowania na formularzu logowania do otwartego projektu. Kliknięcie go powoduje odpowiednie przekierowanie na stronę logowania IDP. Po podaniu referencji poprawnie przekierowuje na adres URL AssertionConsumerService, o którym wspomniałem. Ma postać https://example.com/openproject/auth/saml/callback. Ale strona pokazuje zły błąd żądania. Debugowanie pliku app/controllers/concerns/omniauth_login.rb wykazało, że wewnątrz funkcji omniauth_login następujące wiersze kodu powodują błąd 400.OpenProject OmniAuth SAML Single-Sign On Integration

auth_hash = request.env['omniauth.auth'] 

return render_400 unless auth_hash.valid? 

Wartość auth_hash wygląda na pustą. Czy to może być problem związany z mapowaniem atrybutów lub czymś innym? Pochodzę z PHP bacnkground i nie mam doświadczenia w rubinach na szynach. Dlatego trudno jest rozwiązać problem. Wiele razy próbowałem googlować, ale nie mogłem znaleźć niczego przydatnego.

Każda pomoc jest bardzo doceniana.

Dzięki

Odpowiedz

1

zastąpić następujący kod

uid { @name_id } 

z następującego kodu

uid do 
     if options.uid_attribute 
      ret = find_attribute_by([options.uid_attribute]) 
      if ret.nil? 
      raise OmniAuth::Strategies::SAML::ValidationError.new("SAML response missing '#{options.uid_attribute}' attribute") 
      end 
      ret 
     else 
      @name_id 
     end 
     end 

wewnątrz

strategii/saml.rb

plik. Jest wewnątrz def other_phase funkcji

odsyłającym zajrzyj do poniższego linku github https://github.com/omniauth/omniauth-saml/blob/master/lib/omniauth/strategies/saml.rb numer linii 90