Commit 47f7b1e
2017-11-06 04:30:18
1 parent
9d4e0b1
Changed files (3)
airport
app
controllers
proof
app
controllers
config
initializers
airport/app/controllers/metadata_controller.rb
@@ -1,4 +1,6 @@
class MetadataController < ApplicationController
+ skip_before_action :authenticate!
+
def show
render xml: to_xml
end
proof/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
proof/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