Commit 5fa53a9

mo <mo.khan@gmail.com>
2017-11-01 23:03:49
update sample app to allow login.
1 parent 4d660b2
Changed files (7)
airport/app/controllers/metadata_controller.rb
@@ -7,8 +7,7 @@ class MetadataController < ApplicationController
 
   def to_xml
     builder = Saml::Kit::ServiceProviderMetadata::Builder.new
-    builder.entity_id = "airport.dev"
-    builder.acs_url = "http://localhost:4000/session"
+    builder.add_assertion_consumer_service(session_url, binding: :post)
     builder.to_xml
   end
 end
airport/app/controllers/sessions_controller.rb
@@ -18,7 +18,7 @@ class SessionsController < ApplicationController
 
   def query_params
     {
-      'SAMLRequest' => Saml::Kit::Request.authentication,
+      'SAMLRequest' => Saml::Kit::Request.authentication(assertion_consumer_service: session_url),
       'RelayState' => JSON.generate(inbound_path: '/'),
     }.map do |(x, y)|
       "#{x}=#{CGI.escape(y)}"
airport/config/initializers/saml_kit.rb
@@ -1,4 +1,3 @@
 Saml::Kit.configure do |configuration|
   configuration.issuer = ENV['ISSUER']
-  configuration.acs_url = ENV['ACS_URL']
 end
airport/.env
@@ -1,4 +1,3 @@
-ACS_URL=http://localhost:3000/session
 API_CLIENT_ID=''
 API_CLIENT_SECRET=''
 AUTHENTICATION_HOST=https://auth.dev/auth
airport/Gemfile.lock
@@ -2,9 +2,11 @@ PATH
   remote: ../saml-kit
   specs:
     saml-kit (0.1.0)
+      activemodel (~> 5.1)
       activesupport (~> 5.1)
       builder (~> 3.2)
       nokogiri (~> 1.8)
+      xmldsig (~> 0.6)
 
 GEM
   remote: https://rubygems.org/
@@ -223,6 +225,8 @@ GEM
     websocket-driver (0.6.5)
       websocket-extensions (>= 0.1.0)
     websocket-extensions (0.1.2)
+    xmldsig (0.6.4)
+      nokogiri (>= 1.6.8, < 2.0.0)
     xpath (2.1.0)
       nokogiri (~> 1.3)
 
proof/Gemfile.lock
@@ -2,9 +2,11 @@ PATH
   remote: ../saml-kit
   specs:
     saml-kit (0.1.0)
+      activemodel (~> 5.1)
       activesupport (~> 5.1)
       builder (~> 3.2)
       nokogiri (~> 1.8)
+      xmldsig (~> 0.6)
 
 GEM
   remote: https://rubygems.org/
@@ -219,6 +221,8 @@ GEM
     websocket-driver (0.6.5)
       websocket-extensions (>= 0.1.0)
     websocket-extensions (0.1.2)
+    xmldsig (0.6.4)
+      nokogiri (>= 1.6.8, < 2.0.0)
     xpath (2.1.0)
       nokogiri (~> 1.3)
 
saml-kit/lib/saml/kit/request.rb
@@ -5,8 +5,11 @@ module Saml
         Base64.encode64(compress(document.to_xml))
       end
 
-      def self.authentication
-        encode(AuthenticationRequest::Builder.new)
+      def self.authentication(assertion_consumer_service:, entity_id: nil)
+        builder = AuthenticationRequest::Builder.new
+        builder.acs_url = assertion_consumer_service
+        builder.entity_id = entity_id unless entity_id.blank?
+        encode(builder)
       end
 
       def self.compress(content)