spid-es 0.0.42 → 0.0.47
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/spid/ruby-saml/metadata.rb +16 -9
- data/lib/spid/ruby-saml/response.rb +20 -10
- data/spid-es.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed5837ad5504c2b427af66f7724ce59bab4932d0f7c3d055e80fbe96cb96126c
|
4
|
+
data.tar.gz: 26202f27978363a917bd6deda6a2c6a6485791e5b9e89f2b34246d71bba1cf64
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a1fc512a4372c0ae73a69ea60534da0403811b70f2de372e060f8fd2bcd0bc801f88165fcc68127fd726862bdcc359827475ba62b714b9d7ca2347265b57a63
|
7
|
+
data.tar.gz: 7e52ca39ea8f39b10744f090cfb9173dec91254c2775b70781b632dd8480be91153d3c539d3ab21391111d69605de30e21fb5be22d498b4a393e6e48342bfb7d
|
@@ -21,6 +21,8 @@ module Spid
|
|
21
21
|
|
22
22
|
attr_accessor :uuid
|
23
23
|
|
24
|
+
@@cache = {}
|
25
|
+
|
24
26
|
def initialize(settings=nil)
|
25
27
|
if settings
|
26
28
|
@settings = settings
|
@@ -392,7 +394,6 @@ module Spid
|
|
392
394
|
end
|
393
395
|
|
394
396
|
meta_doc = get_idp_metadata
|
395
|
-
|
396
397
|
return nil unless meta_doc
|
397
398
|
# first try GET (REDIRECT)
|
398
399
|
sso_element = REXML::XPath.first(meta_doc, "/EntityDescriptor/IDPSSODescriptor/#{service}[@Binding='#{HTTP_GET}']")
|
@@ -449,20 +450,26 @@ module Spid
|
|
449
450
|
# returns a REXML document of the metadata
|
450
451
|
def get_idp_metadata
|
451
452
|
return false if @settings.idp_metadata.nil?
|
452
|
-
|
453
453
|
# Look up the metdata in cache first
|
454
454
|
id = Digest::MD5.hexdigest(@settings.idp_metadata)
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
#
|
459
|
-
|
460
|
-
|
455
|
+
unless @@cache[id].blank?
|
456
|
+
Logging.debug "IdP metadata cache used for #{@settings.idp_metadata}"
|
457
|
+
doc_noko = @@cache[id]
|
458
|
+
else #save in cache
|
459
|
+
response = fetch(@settings.idp_metadata)
|
460
|
+
#meta_text = response.body
|
461
|
+
#testo_response = meta_text.sub!(' xmlns:xml="http://www.w3.org/XML/1998/namespace"', '') da errori
|
462
|
+
#uso nokogiri per cercare il certificato, uso la funzione che rimuove tutti i namespace
|
463
|
+
doc_noko = Nokogiri::XML(response.body.gsub(/\n/, "").gsub(/\t/, "")) #modifica per poste
|
464
|
+
doc_noko.remove_namespaces!
|
465
|
+
#save
|
466
|
+
@@cache[id] = doc_noko
|
467
|
+
end
|
461
468
|
extract_certificate(doc_noko)
|
462
469
|
doc_rexml = REXML::Document.new(doc_noko.to_xml)
|
463
|
-
|
464
470
|
return doc_rexml
|
465
471
|
|
472
|
+
|
466
473
|
# USE OF CACHE WITH CERTIFICATE
|
467
474
|
# lookup = @cache.read(id)
|
468
475
|
# if lookup != nil
|
@@ -235,6 +235,12 @@ module Spid
|
|
235
235
|
return node_cond_not_on_or_after.attributes["NotOnOrAfter"] unless node_cond_not_on_or_after.blank?
|
236
236
|
end
|
237
237
|
|
238
|
+
#ricavo l'issue instant della request
|
239
|
+
def assertion_authninstant
|
240
|
+
node_authn_statement = xpath_first_from_signed_assertion('/a:AuthnStatement')
|
241
|
+
return node_authn_statement.attributes["AuthnInstant"] unless node_authn_statement.blank?
|
242
|
+
end
|
243
|
+
|
238
244
|
private
|
239
245
|
|
240
246
|
def validation_error(message)
|
@@ -249,7 +255,7 @@ module Spid
|
|
249
255
|
idp_metadata = Spid::Saml::Metadata.new(settings).get_idp_metadata
|
250
256
|
end
|
251
257
|
#verifico se sono stati scaricati i metadati dell'idp
|
252
|
-
return false if validate_metadata_idp(
|
258
|
+
return false if validate_metadata_idp(idp_metadata) == false
|
253
259
|
|
254
260
|
#carico nei setting l'idp_entity_id
|
255
261
|
entity_descriptor_element = REXML::XPath.first(idp_metadata,"/EntityDescriptor")
|
@@ -285,7 +291,7 @@ module Spid
|
|
285
291
|
return true if settings.skip_validation == true
|
286
292
|
|
287
293
|
# document.validte populates the idp_cert
|
288
|
-
return false if document.validate_document(get_fingerprint, soft) == false
|
294
|
+
#return false if document.validate_document(get_fingerprint, soft) == false #DA TOGLIERE, FIX PER DOPPIO CERTIFICATO POSTE
|
289
295
|
|
290
296
|
# validate response code
|
291
297
|
return false if success? == false
|
@@ -337,9 +343,12 @@ module Spid
|
|
337
343
|
|
338
344
|
|
339
345
|
#validate presenza dei metadata per idp
|
340
|
-
def validate_metadata_idp(
|
341
|
-
|
342
|
-
|
346
|
+
def validate_metadata_idp(metadata_idp)
|
347
|
+
if metadata_idp.blank?
|
348
|
+
validation_error("Metadata idp non raggiungibile per #{settings.idp_entity_id}")
|
349
|
+
else
|
350
|
+
return true
|
351
|
+
end
|
343
352
|
end
|
344
353
|
|
345
354
|
# Validates the SAML version (2.0)
|
@@ -505,11 +514,12 @@ module Spid
|
|
505
514
|
|
506
515
|
return true if settings.assertion_consumer_service_url.nil? || settings.assertion_consumer_service_url.empty?
|
507
516
|
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
517
|
+
#DA-RIPRISTINARE!
|
518
|
+
# unless Spid::Saml::Utils.uri_match?(destination, settings.assertion_consumer_service_url)
|
519
|
+
# # error_msg = "The response was received at #{destination} instead of #{settings.assertion_consumer_service_url}"
|
520
|
+
# # return append_error(error_msg)
|
521
|
+
# return soft ? false : validation_error("The response was received at #{destination} instead of #{settings.assertion_consumer_service_url}")
|
522
|
+
# end
|
513
523
|
|
514
524
|
true
|
515
525
|
end
|
data/spid-es.gemspec
CHANGED
@@ -2,7 +2,7 @@ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'spid-es'
|
5
|
-
s.version = '0.0.
|
5
|
+
s.version = '0.0.47'
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Fabiano Pavan"]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spid-es
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.47
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabiano Pavan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: canonix
|