Commit 74e0535

mo <mo@mokhan.ca>
2017-11-06 04:30:18
register SP metadata.
1 parent 5191c41
Changed files (2)
app
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