saml-kit 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 11da72a9a04500f85a856e8bdb82e5d32f930383bacbc4c1b2eacb5908336581
4
- data.tar.gz: cb5c231e608a6fc199052c1c3e4922837c51534ec99a3416b1d45aa73efd07db
3
+ metadata.gz: '029d3a033d81aac8add1be06a783516f239b7b38cec4bb6e701e010c80b82e98'
4
+ data.tar.gz: a29f4fd46aa450d8392376cdb38fe2510575b7a51e1217987719f1828c1defbc
5
5
  SHA512:
6
- metadata.gz: 3283b83d0c28a95e3bc1bbf3999bd5eee369dc82dcaa1eb4330dbb89e82ee57be3df06ad1548c416adc6a79f249642fda08d56e11323d88c7ffbd553b0431473
7
- data.tar.gz: 49aa1074365a8c48f287e3939d3f9f3deb0d0f45168982a4197b091cf34257b60324eb177311581069a0ba47468bce0354a0d0d133668fc36180d38106add5e2
6
+ metadata.gz: 694fe63f05d9b011d998f4c144faf75f9b852e63ad01badf522b23e654038c5d6655334a24b9c366d5920df0f01772fbfdf0190c5946cbca79a007b1a74eb64c
7
+ data.tar.gz: 4b497ec560bbd279cc957ee2765bd1e6f1ea48a591e54a58f434522984bcf0ebcf210e343b8a02ecc0e268d6d95221cd21138fb2b655b008203f0520cc8cebb4
data/lib/saml/kit.rb CHANGED
@@ -74,7 +74,7 @@ module Saml
74
74
  end
75
75
 
76
76
  def deprecate(message)
77
- @deprecation ||= ActiveSupport::Deprecation.new('next-release', 'saml-kit')
77
+ @deprecation ||= ActiveSupport::Deprecation.new('1.0.0', 'saml-kit')
78
78
  @deprecation.deprecation_warning(message)
79
79
  end
80
80
  end
@@ -18,7 +18,7 @@ module Saml
18
18
  def response_for(user, binding:, relay_state: nil)
19
19
  response_binding = provider.assertion_consumer_service_for(binding: binding)
20
20
  builder = Saml::Kit::Response.builder(user, self) do |x|
21
- x.sign = provider.want_assertions_signed
21
+ x.embed_signature = provider.want_assertions_signed
22
22
  yield x if block_given?
23
23
  end
24
24
  response_binding.serialize(builder, relay_state: relay_state)
@@ -9,7 +9,7 @@ module Saml
9
9
  end
10
10
 
11
11
  def serialize(builder, relay_state: nil)
12
- builder.sign = false
12
+ builder.embed_signature = false
13
13
  builder.destination = location
14
14
  document = builder.build
15
15
  [UrlBuilder.new(configuration: builder.configuration).build(document, relay_state: relay_state), {}]
@@ -3,6 +3,7 @@ require 'saml/kit/builders/authentication_request'
3
3
  require 'saml/kit/builders/identity_provider_metadata'
4
4
  require 'saml/kit/builders/logout_request'
5
5
  require 'saml/kit/builders/logout_response'
6
+ require 'saml/kit/builders/metadata'
6
7
  require 'saml/kit/builders/response'
7
8
  require 'saml/kit/builders/service_provider_metadata'
8
9
  require 'saml/kit/builders/xml_encryption'
@@ -5,7 +5,7 @@ module Saml
5
5
  include Templatable
6
6
  extend Forwardable
7
7
 
8
- def_delegators :@response_builder, :encrypt, :sign, :request, :issuer, :reference_id, :now, :configuration, :user, :version, :destination, :encryption_certificate
8
+ def_delegators :@response_builder, :encrypt, :embed_signature, :request, :issuer, :reference_id, :now, :configuration, :user, :version, :destination, :encryption_certificate
9
9
 
10
10
  def initialize(response_builder)
11
11
  @response_builder = response_builder
@@ -3,10 +3,13 @@ module Saml
3
3
  module Builders
4
4
  class IdentityProviderMetadata
5
5
  include Saml::Kit::Templatable
6
- attr_accessor :id, :organization_name, :organization_url, :contact_email, :entity_id, :attributes, :name_id_formats
6
+ extend Forwardable
7
+ attr_accessor :attributes, :name_id_formats
7
8
  attr_accessor :want_authn_requests_signed
8
9
  attr_reader :logout_urls, :single_sign_on_urls
9
10
  attr_reader :configuration
11
+ attr_reader :metadata
12
+ def_delegators :metadata, :id, :id=, :entity_id, :entity_id=, :organization_name, :organization_name=, :organization_url, :organization_url=, :contact_email, :contact_email=, :to_xml
10
13
 
11
14
  def initialize(configuration: Saml::Kit.configuration)
12
15
  @attributes = []
@@ -17,6 +20,8 @@ module Saml
17
20
  @name_id_formats = [Namespaces::PERSISTENT]
18
21
  @single_sign_on_urls = []
19
22
  @want_authn_requests_signed = true
23
+ @metadata = Saml::Kit::Builders::Metadata.new(configuration: configuration)
24
+ @metadata.identity_provider = self
20
25
  end
21
26
 
22
27
  def add_single_sign_on_service(url, binding: :http_post)
@@ -43,7 +48,7 @@ module Saml
43
48
  }
44
49
  end
45
50
 
46
- def idp_sso_descriptor_options
51
+ def descriptor_options
47
52
  {
48
53
  WantAuthnRequestsSigned: want_authn_requests_signed,
49
54
  protocolSupportEnumeration: Namespaces::PROTOCOL,
@@ -0,0 +1,50 @@
1
+ module Saml
2
+ module Kit
3
+ module Builders
4
+ class Metadata
5
+ include Templatable
6
+
7
+ attr_accessor :entity_id
8
+ attr_accessor :id
9
+ attr_accessor :identity_provider
10
+ attr_accessor :organization_name, :organization_url, :contact_email
11
+ attr_accessor :service_provider
12
+ attr_reader :configuration
13
+
14
+ def initialize(configuration: Saml::Kit.configuration)
15
+ @id = Id.generate
16
+ @entity_id = configuration.issuer
17
+ @configuration = configuration
18
+ end
19
+
20
+ def build_service_provider
21
+ @service_provider = Saml::Kit::ServiceProviderMetadata.builder(configuration: configuration) do |x|
22
+ yield x if block_given?
23
+ end
24
+ end
25
+
26
+ def build_identity_provider
27
+ @identity_provider = Saml::Kit::IdentityProviderMetadata.builder(configuration: configuration) do |x|
28
+ yield x if block_given?
29
+ end
30
+ end
31
+
32
+ def build
33
+ Saml::Kit::Metadata.from(to_xml)
34
+ end
35
+
36
+ private
37
+
38
+ def entity_descriptor_options
39
+ {
40
+ 'xmlns': Namespaces::METADATA,
41
+ 'xmlns:ds': Namespaces::XMLDSIG,
42
+ 'xmlns:saml': Namespaces::ASSERTION,
43
+ ID: id,
44
+ entityID: entity_id,
45
+ }
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -18,7 +18,7 @@ module Saml
18
18
  @version = "2.0"
19
19
  @status_code = Namespaces::SUCCESS
20
20
  @issuer = configuration.issuer
21
- @sign = want_assertions_signed
21
+ @embed_signature = want_assertions_signed
22
22
  @encrypt = encryption_certificate.present?
23
23
  @configuration = configuration
24
24
  end
@@ -3,19 +3,21 @@ module Saml
3
3
  module Builders
4
4
  class ServiceProviderMetadata
5
5
  include Saml::Kit::Templatable
6
- attr_accessor :id, :entity_id, :acs_urls, :logout_urls, :name_id_formats
7
- attr_accessor :organization_name, :organization_url, :contact_email
6
+ extend Forwardable
7
+ attr_accessor :acs_urls, :logout_urls, :name_id_formats
8
8
  attr_accessor :want_assertions_signed
9
9
  attr_reader :configuration
10
+ attr_reader :metadata
11
+ def_delegators :metadata, :id, :id=, :entity_id, :entity_id=, :organization_name, :organization_name=, :organization_url, :organization_url=, :contact_email, :contact_email=, :to_xml
10
12
 
11
13
  def initialize(configuration: Saml::Kit.configuration)
12
14
  @acs_urls = []
13
15
  @configuration = configuration
14
- @entity_id = configuration.issuer
15
- @id = Id.generate
16
16
  @logout_urls = []
17
17
  @name_id_formats = [Namespaces::PERSISTENT]
18
18
  @want_assertions_signed = true
19
+ @metadata = Saml::Kit::Builders::Metadata.new(configuration: configuration)
20
+ @metadata.service_provider = self
19
21
  end
20
22
 
21
23
  def add_assertion_consumer_service(url, binding: :http_post)
@@ -1,32 +1,21 @@
1
- xml.instruct!
2
- xml.EntityDescriptor entity_descriptor_options do
3
- signature_for(reference_id: id, xml: xml)
4
- xml.IDPSSODescriptor idp_sso_descriptor_options do
5
- configuration.certificates(use: :signing).each do |certificate|
6
- render certificate, xml: xml
7
- end
8
- configuration.certificates(use: :encryption).each do |certificate|
9
- render certificate, xml: xml
10
- end
11
- logout_urls.each do |item|
12
- xml.SingleLogoutService Binding: item[:binding], Location: item[:location]
13
- end
14
- name_id_formats.each do |format|
15
- xml.NameIDFormat format
16
- end
17
- single_sign_on_urls.each do |item|
18
- xml.SingleSignOnService Binding: item[:binding], Location: item[:location]
19
- end
20
- attributes.each do |attribute|
21
- xml.tag! 'saml:Attribute', Name: attribute
22
- end
1
+ signature_for(reference_id: id, xml: xml)
2
+ xml.IDPSSODescriptor descriptor_options do
3
+ configuration.certificates(use: :signing).each do |certificate|
4
+ render certificate, xml: xml
23
5
  end
24
- xml.Organization do
25
- xml.OrganizationName organization_name, 'xml:lang': "en"
26
- xml.OrganizationDisplayName organization_name, 'xml:lang': "en"
27
- xml.OrganizationURL organization_url, 'xml:lang': "en"
6
+ configuration.certificates(use: :encryption).each do |certificate|
7
+ render certificate, xml: xml
28
8
  end
29
- xml.ContactPerson contactType: "technical" do
30
- xml.Company "mailto:#{contact_email}"
9
+ logout_urls.each do |item|
10
+ xml.SingleLogoutService Binding: item[:binding], Location: item[:location]
11
+ end
12
+ name_id_formats.each do |format|
13
+ xml.NameIDFormat format
14
+ end
15
+ single_sign_on_urls.each do |item|
16
+ xml.SingleSignOnService Binding: item[:binding], Location: item[:location]
17
+ end
18
+ attributes.each do |attribute|
19
+ xml.tag! 'saml:Attribute', Name: attribute
31
20
  end
32
21
  end
@@ -0,0 +1,13 @@
1
+ xml.instruct!
2
+ xml.EntityDescriptor entity_descriptor_options do
3
+ render identity_provider, xml: xml
4
+ render service_provider, xml: xml
5
+ xml.Organization do
6
+ xml.OrganizationName organization_name, 'xml:lang': "en"
7
+ xml.OrganizationDisplayName organization_name, 'xml:lang': "en"
8
+ xml.OrganizationURL organization_url, 'xml:lang': "en"
9
+ end
10
+ xml.ContactPerson contactType: "technical" do
11
+ xml.Company "mailto:#{contact_email}"
12
+ end
13
+ end
@@ -1,29 +1,18 @@
1
- xml.instruct!
2
- xml.EntityDescriptor entity_descriptor_options do
3
- signature_for(reference_id: id, xml: xml)
4
- xml.SPSSODescriptor descriptor_options do
5
- configuration.certificates(use: :signing).each do |certificate|
6
- render certificate, xml: xml
7
- end
8
- configuration.certificates(use: :encryption).each do |certificate|
9
- render certificate, xml: xml
10
- end
11
- logout_urls.each do |item|
12
- xml.SingleLogoutService Binding: item[:binding], Location: item[:location]
13
- end
14
- name_id_formats.each do |format|
15
- xml.NameIDFormat format
16
- end
17
- acs_urls.each_with_index do |item, index|
18
- xml.AssertionConsumerService Binding: item[:binding], Location: item[:location], index: index, isDefault: index == 0 ? true : false
19
- end
1
+ signature_for(reference_id: id, xml: xml)
2
+ xml.SPSSODescriptor descriptor_options do
3
+ configuration.certificates(use: :signing).each do |certificate|
4
+ render certificate, xml: xml
20
5
  end
21
- xml.Organization do
22
- xml.OrganizationName organization_name, 'xml:lang': "en"
23
- xml.OrganizationDisplayName organization_name, 'xml:lang': "en"
24
- xml.OrganizationURL organization_url, 'xml:lang': "en"
6
+ configuration.certificates(use: :encryption).each do |certificate|
7
+ render certificate, xml: xml
25
8
  end
26
- xml.ContactPerson contactType: "technical" do
27
- xml.Company "mailto:#{contact_email}"
9
+ logout_urls.each do |item|
10
+ xml.SingleLogoutService Binding: item[:binding], Location: item[:location]
11
+ end
12
+ name_id_formats.each do |format|
13
+ xml.NameIDFormat format
14
+ end
15
+ acs_urls.each_with_index do |item, index|
16
+ xml.AssertionConsumerService Binding: item[:binding], Location: item[:location], index: index, isDefault: index == 0 ? true : false
28
17
  end
29
18
  end
@@ -17,7 +17,7 @@ module Saml
17
17
  SHA512: "http://www.w3.org/2001/04/xmlenc#sha512",
18
18
  }.freeze
19
19
 
20
- attr_reader :sign, :configuration
20
+ attr_reader :embed_signature, :configuration
21
21
  attr_reader :reference_id
22
22
  attr_reader :x509_certificate
23
23
 
@@ -31,7 +31,7 @@ module Saml
31
31
 
32
32
  def login_request_for(binding:, relay_state: nil)
33
33
  builder = Saml::Kit::AuthenticationRequest.builder do |x|
34
- x.sign = want_authn_requests_signed
34
+ x.embed_signature = want_authn_requests_signed
35
35
  yield x if block_given?
36
36
  end
37
37
  request_binding = single_sign_on_service_for(binding: binding)
@@ -109,6 +109,10 @@ module Saml
109
109
  end
110
110
  end
111
111
 
112
+ def self.builder_class
113
+ Saml::Kit::Builders::Metadata
114
+ end
115
+
112
116
  private
113
117
 
114
118
  def document
@@ -1,7 +1,12 @@
1
1
  module Saml
2
2
  module Kit
3
3
  module Templatable
4
- attr_accessor :sign
4
+ attr_accessor :embed_signature
5
+
6
+ def sign=(value)
7
+ Saml::Kit.deprecate("sign= is deprecated. Use embed_signature= instead")
8
+ self.embed_signature = value
9
+ end
5
10
 
6
11
  def to_xml(xml: ::Builder::XmlMarkup.new)
7
12
  signatures.complete(render(self, xml: xml))
@@ -13,7 +18,7 @@ module Saml
13
18
  end
14
19
 
15
20
  def sign?
16
- sign.nil? ? configuration.sign? : sign && configuration.sign?
21
+ embed_signature.nil? ? configuration.sign? : embed_signature && configuration.sign?
17
22
  end
18
23
 
19
24
  def signatures
@@ -1,5 +1,5 @@
1
1
  module Saml
2
2
  module Kit
3
- VERSION = "0.2.6"
3
+ VERSION = "0.2.7"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: saml-kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - mo khan
@@ -202,6 +202,7 @@ files:
202
202
  - lib/saml/kit/builders/identity_provider_metadata.rb
203
203
  - lib/saml/kit/builders/logout_request.rb
204
204
  - lib/saml/kit/builders/logout_response.rb
205
+ - lib/saml/kit/builders/metadata.rb
205
206
  - lib/saml/kit/builders/response.rb
206
207
  - lib/saml/kit/builders/service_provider_metadata.rb
207
208
  - lib/saml/kit/builders/templates/assertion.builder
@@ -210,6 +211,7 @@ files:
210
211
  - lib/saml/kit/builders/templates/identity_provider_metadata.builder
211
212
  - lib/saml/kit/builders/templates/logout_request.builder
212
213
  - lib/saml/kit/builders/templates/logout_response.builder
214
+ - lib/saml/kit/builders/templates/metadata.builder
213
215
  - lib/saml/kit/builders/templates/nil_class.builder
214
216
  - lib/saml/kit/builders/templates/response.builder
215
217
  - lib/saml/kit/builders/templates/service_provider_metadata.builder