Commit 74e0535
Changed files (2)
app
controllers
config
initializers
app/controllers/metadata_controller.rb
@@ -11,11 +11,12 @@ class MetadataController < ApplicationController
builder.entity_id = metadata_url
builder.organization_name = "Acme, Inc"
builder.organization_url = root_url
- builder.single_sign_on_location = new_session_url
- builder.single_logout_location = session_url
- builder.attributes << "id"
- builder.attributes << "email"
- builder.attributes << "created_at"
+ builder.add_single_sign_on_service(new_session_url, binding: :post)
+ builder.add_single_sign_on_service(new_session_url, binding: :http_redirect)
+ builder.add_single_logout_service(session_url, binding: :post)
+ builder.attributes << :id
+ builder.attributes << :email
+ builder.attributes << :created_at
builder.build.to_xml
end
end
config/initializers/saml_kit.rb
@@ -1,3 +1,24 @@
+class DeferredRegistry
+ attr_reader :urls
+
+ def initialize(original, urls: [])
+ @urls = urls
+ @original = original
+ end
+
+ def metadata_for(entity_id)
+ if @bootstrapped.nil?
+ @urls.each do |url|
+ @original.register_url(url, verify_ssl: Rails.env.production?)
+ end
+ @bootstrapped = true
+ end
+
+ @original.metadata_for(entity_id)
+ end
+end
+
Saml::Kit.configure do |configuration|
configuration.issuer = ENV['ISSUER']
+ configuration.registry = DeferredRegistry.new(configuration.registry, urls: ["http://localhost:3000/metadata"])
end