2017-06-06 39 views
8

Tôi đang cố gắng thiết lập tích hợp SSO (Đăng nhập một lần) với OpenProject bằng cách sử dụng plugin OpenProject OmniAuth SAML Single-Sign On. Tôi đã cấu hình nó với các chi tiết liên quan. Đã tạo siêu dữ liệu và đăng ký siêu dữ liệu với IDP do Shibboleth cung cấp. Plugin này hiển thị nút đăng nhập bổ sung trên biểu mẫu đăng nhập mở. Nhấp vào nó đang chuyển hướng chính xác đến trang đăng nhập của IDP. Sau khi cung cấp thông tin đăng nhập, nó sẽ chuyển hướng chính xác đến URL AssertionConsumerService mà tôi đã đề cập. Nó có dạng https://example.com/openproject/auth/saml/callback. Nhưng trang đang hiển thị lỗi yêu cầu không hợp lệ. Gỡ lỗi tệp app/controllers/concerns/omniauth_login.rb cho thấy rằng, bên trong hàm omniauth_login, các dòng mã sau đây dẫn đến lỗi 400.OpenProject OmniAuth SAML Tích hợp một lần trên

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

return render_400 unless auth_hash.valid? 

Giá trị của auth_hash có vẻ trống. Đây có phải là một vấn đề do ánh xạ thuộc tính hay cái gì khác? Tôi đến từ bacnkground PHP và không có kinh nghiệm về ruby ​​trên đường ray. Vì vậy, việc tìm ra khó khăn để gỡ lỗi vấn đề. Tôi đã thử googling rất nhiều nhưng không thể tìm thấy bất cứ điều gì hữu ích.

Bất kỳ trợ giúp nào được đánh giá cao.

Cảm ơn

Trả lời

1

thay thế đoạn mã sau

uid { @name_id } 

với đoạn mã sau

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 

bên trong

chiến lược/saml.rb

tệp. Đó là bên trong def other_phase chức năng

Để tham khảo xin vui lòng có một cái nhìn vào liên kết github sau https://github.com/omniauth/omniauth-saml/blob/master/lib/omniauth/strategies/saml.rb số dòng 90

Các vấn đề liên quan