saml-kit 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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