shibkit-meta_meta 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +21 -0
- data/Gemfile.lock +52 -0
- data/Icon.png +0 -0
- data/LICENSE.txt +177 -0
- data/README.md +789 -0
- data/Rakefile +38 -0
- data/VERSION +1 -0
- data/examples/biggest_entity_id.rb +4 -0
- data/lib/shibkit/meta_meta.rb +600 -0
- data/lib/shibkit/meta_meta/attribute.rb +73 -0
- data/lib/shibkit/meta_meta/config.rb +463 -0
- data/lib/shibkit/meta_meta/contact.rb +85 -0
- data/lib/shibkit/meta_meta/data/default_metadata/example_federation_metadata.xml +168 -0
- data/lib/shibkit/meta_meta/data/default_metadata/local_metadata.xml +66 -0
- data/lib/shibkit/meta_meta/data/default_metadata/uncommon_federation_metadata.xml +115 -0
- data/lib/shibkit/meta_meta/data/default_metadata_cache.yml +166 -0
- data/lib/shibkit/meta_meta/data/dev_sources.yml +86 -0
- data/lib/shibkit/meta_meta/data/real_sources.yml +163 -0
- data/lib/shibkit/meta_meta/entity.rb +219 -0
- data/lib/shibkit/meta_meta/federation.rb +161 -0
- data/lib/shibkit/meta_meta/idp.rb +81 -0
- data/lib/shibkit/meta_meta/logo.rb +216 -0
- data/lib/shibkit/meta_meta/metadata_item.rb +244 -0
- data/lib/shibkit/meta_meta/mixin/cached_downloads.rb +127 -0
- data/lib/shibkit/meta_meta/mixin/xpath_chores.rb +111 -0
- data/lib/shibkit/meta_meta/organisation.rb +73 -0
- data/lib/shibkit/meta_meta/provider.rb +195 -0
- data/lib/shibkit/meta_meta/provisioning/base.rb +33 -0
- data/lib/shibkit/meta_meta/requested_attribute.rb +29 -0
- data/lib/shibkit/meta_meta/service.rb +94 -0
- data/lib/shibkit/meta_meta/source.rb +558 -0
- data/lib/shibkit/meta_meta/sp.rb +79 -0
- data/shibkit-meta_meta.gemspec +154 -0
- data/spec/meta_meta/attribute/token +0 -0
- data/spec/meta_meta/config/autoloading_and_refreshing_spec.rb +72 -0
- data/spec/meta_meta/config/code_nspec.rb +13 -0
- data/spec/meta_meta/config/configuration_spec.rb +30 -0
- data/spec/meta_meta/config/creation_spec.rb +43 -0
- data/spec/meta_meta/config/downloading_and_caching_settings_spec.rb +216 -0
- data/spec/meta_meta/config/env_platform_settings.rb +129 -0
- data/spec/meta_meta/config/filtering_settings_spec.rb +123 -0
- data/spec/meta_meta/config/init.rb +8 -0
- data/spec/meta_meta/config/logger_settings_spec.rb +91 -0
- data/spec/meta_meta/config/smartcache_settings_spec.rb +110 -0
- data/spec/meta_meta/config/source_file_settings_spec.rb +99 -0
- data/spec/meta_meta/config/tagging_settings_spec.rb +81 -0
- data/spec/meta_meta/config/working_directory_settings_spec.rb +106 -0
- data/spec/meta_meta/config/xml_processing_settings_spec.rb +75 -0
- data/spec/meta_meta/contact/contact_oldspec.rb +0 -0
- data/spec/meta_meta/entity/entity_oldspec.rb +53 -0
- data/spec/meta_meta/federation/federation_oldspec.rb +0 -0
- data/spec/meta_meta/idp/token +0 -0
- data/spec/meta_meta/logo/token +0 -0
- data/spec/meta_meta/meta_meta/cache_example.yaml +141284 -0
- data/spec/meta_meta/meta_meta/meta_meta_spec.rb +269 -0
- data/spec/meta_meta/meta_meta/saved_sources.yaml +46 -0
- data/spec/meta_meta/metadata_item/token +0 -0
- data/spec/meta_meta/organisation/organisation_oldspec.rb +0 -0
- data/spec/meta_meta/provider/token +0 -0
- data/spec/meta_meta/requested_attribute/token +0 -0
- data/spec/meta_meta/service/token +0 -0
- data/spec/meta_meta/source/application_extras_spec.rb +234 -0
- data/spec/meta_meta/source/conversion_spec.rb +75 -0
- data/spec/meta_meta/source/creation_spec.rb +0 -0
- data/spec/meta_meta/source/downloads_and_caching_spec.rb +0 -0
- data/spec/meta_meta/source/federation_information_spec.rb +11 -0
- data/spec/meta_meta/source/fixtures.rb +24 -0
- data/spec/meta_meta/source/init.rb +1 -0
- data/spec/meta_meta/source/loading_and_saving_spec.rb +0 -0
- data/spec/meta_meta/source/metadata_details_spec.rb +0 -0
- data/spec/meta_meta/source/metadata_integrity_spec.rb +0 -0
- data/spec/meta_meta/source/selection_spec.rb +0 -0
- data/spec/meta_meta/source/source_oldspec.rb +353 -0
- data/spec/meta_meta/source/xml_parsing_spec.rb +0 -0
- data/spec/meta_meta/sp/token +0 -0
- data/spec/meta_meta/template +2 -0
- data/spec/moi/config_spec.rb +0 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +25 -0
- data/spec/support/supply_xml.rb +0 -0
- metadata +320 -0
@@ -0,0 +1,86 @@
|
|
1
|
+
##
|
2
|
+
## Federation Metdata Metadata: Development/test data
|
3
|
+
##
|
4
|
+
## * ______________________________________________________________________ *
|
5
|
+
## * Important: Please Read This Disclaimer Right Now Before It Is Too Late *
|
6
|
+
## * ______________________________________________________________________ *
|
7
|
+
##
|
8
|
+
## The information in this list is provided for convenience during development.
|
9
|
+
## It is not, and *cannot*, be guaranteed to be accurate or up-to-date.
|
10
|
+
## Do not rely on this information as-is for production services.
|
11
|
+
##
|
12
|
+
## Some processes should not always be automated.
|
13
|
+
##
|
14
|
+
## The correct way to validate metadata is to download the federation certificate
|
15
|
+
## and verify it 'out of band', by telephone, signed email, or even by post.
|
16
|
+
## DNS and even federation sites can be compromised or intercepted; if you
|
17
|
+
## can't trust the certificate you can't trust the metadata.
|
18
|
+
##
|
19
|
+
|
20
|
+
## This file contains metadata about federation metadata and simpler collections
|
21
|
+
## of metadata. It can be used to quickly populate your software with data on
|
22
|
+
## SAML SPs and IDPs, run tests, or whatever else takes your fancy.
|
23
|
+
|
24
|
+
## Please feel free to fork this project on Github, add new federation info,
|
25
|
+
## then send a pull request!
|
26
|
+
|
27
|
+
## UK Example Federation For Software Development
|
28
|
+
example:
|
29
|
+
name: UK Example Federation For Software Development
|
30
|
+
display_name: UK Example Federation
|
31
|
+
type: federation
|
32
|
+
countries: [gb]
|
33
|
+
metadata: example_federation_metadata.xml
|
34
|
+
certificate: ~
|
35
|
+
fingerprint: ~
|
36
|
+
refeds_info: ~
|
37
|
+
homepage: http://examplefederation.org.uk
|
38
|
+
languages: ['en-gb', en]
|
39
|
+
support_email: service@examplefederation.org.uk
|
40
|
+
description: >
|
41
|
+
An example federation with a few entities, mostly for software testing
|
42
|
+
purposes and idle amusement. Uttlerly rushed and bodged at present and not
|
43
|
+
actually valid, partially defeating the purpose of the exercise.
|
44
|
+
trustiness: 1
|
45
|
+
groups:
|
46
|
+
- fictional
|
47
|
+
tags:
|
48
|
+
- example
|
49
|
+
|
50
|
+
|
51
|
+
## unCommon Federation
|
52
|
+
uncommon:
|
53
|
+
name: unCommon Federation
|
54
|
+
display_name: unCommon
|
55
|
+
type: federation
|
56
|
+
countries: [us]
|
57
|
+
metadata: uncommon_federation_metadata.xml
|
58
|
+
certificate: ~
|
59
|
+
fingerprint: ~
|
60
|
+
refeds_info: ~
|
61
|
+
homepage: http://www.uncommonfederation.org
|
62
|
+
languages: [en]
|
63
|
+
support_email: admin@uncommonfederation.org
|
64
|
+
description: >
|
65
|
+
Providing a set of example entities based on unusual and fictional
|
66
|
+
academic organisations.
|
67
|
+
|
68
|
+
## Local collection
|
69
|
+
local:
|
70
|
+
name: Other Organisations
|
71
|
+
display_name: Other Organisations
|
72
|
+
type: collection
|
73
|
+
countries: [us]
|
74
|
+
metadata: local_metadata.xml
|
75
|
+
certificate: ~
|
76
|
+
fingerprint: ~
|
77
|
+
refeds_info: ~
|
78
|
+
homepage: ~
|
79
|
+
languages: [en]
|
80
|
+
support_email: ~
|
81
|
+
description: >
|
82
|
+
Other organisations that are not members of a federation.
|
83
|
+
|
84
|
+
## Want more?
|
85
|
+
## Fork this project on Github, add new federation info and
|
86
|
+
## then send a pull request!
|
@@ -0,0 +1,163 @@
|
|
1
|
+
##
|
2
|
+
## Federation Metdata Metadata: Real Federations
|
3
|
+
##
|
4
|
+
## * ______________________________________________________________________ *
|
5
|
+
## * Important: Please Read This Disclaimer Right Now Before It Is Too Late *
|
6
|
+
## * ______________________________________________________________________ *
|
7
|
+
##
|
8
|
+
## The information in this list is provided for convenience during development.
|
9
|
+
## It is not, and *cannot*, be guaranteed to be accurate or up-to-date.
|
10
|
+
## Do not rely on this information as-is for production services.
|
11
|
+
##
|
12
|
+
## Some processes should not always be automated.
|
13
|
+
##
|
14
|
+
## The correct way to validate metadata is to download the federation certificate
|
15
|
+
## and verify it 'out of band', by telephone, signed email, or even by post.
|
16
|
+
## DNS and even federation sites can be compromised or intercepted; if you
|
17
|
+
## can't trust the certificate you can't trust the metadata.
|
18
|
+
##
|
19
|
+
|
20
|
+
## This file contains metadata about federation metadata and simpler collections
|
21
|
+
## of metadata. It can be used to quickly populate your software with data on
|
22
|
+
## SAML SPs and IDPs, run tests, or whatever else takes your fancy.
|
23
|
+
|
24
|
+
## Please feel free to fork this project on Github, add new federation info,
|
25
|
+
## then send a pull request!
|
26
|
+
|
27
|
+
## UK Access Management Federation For Education And Research
|
28
|
+
'http://ukfederation.org.uk':
|
29
|
+
name: UK Access Management Federation For Education And Research
|
30
|
+
display_name: UK Access Management Federation
|
31
|
+
type: federation
|
32
|
+
countries: [:gb]
|
33
|
+
metadata: http://metadata.ukfederation.org.uk/ukfederation-metadata.xml
|
34
|
+
certificate: http://metadata.ukfederation.org.uk/ukfederation.pem
|
35
|
+
fingerprint: ~
|
36
|
+
refeds_info: https://refeds.terena.org/index.php/FederationUkfed
|
37
|
+
homepage: http://www.ukfederation.org.uk
|
38
|
+
languages: ['en-gb', :en]
|
39
|
+
support_email: service@ukfederation.org.uk
|
40
|
+
tags:
|
41
|
+
- :refeds
|
42
|
+
groups:
|
43
|
+
- :spec_set_1
|
44
|
+
- :spec_set_2
|
45
|
+
description: >
|
46
|
+
A single solution for accessing online resources and services for
|
47
|
+
education and research in the UK.
|
48
|
+
|
49
|
+
## inCommon Federation
|
50
|
+
'urn:mace:incommon':
|
51
|
+
name: inCommon Federation
|
52
|
+
display_name: inCommon
|
53
|
+
type: federation
|
54
|
+
countries: [:us]
|
55
|
+
metadata: https://wayf.incommonfederation.org/InCommon/InCommon-metadata.xml
|
56
|
+
certificate: https://wayf.incommonfederation.org/bridge/certs/incommon.pem
|
57
|
+
fingerprint: ~
|
58
|
+
refeds_info: https://refeds.terena.org/index.php/FederationIncommon
|
59
|
+
homepage: http://www.incommon.org
|
60
|
+
languages: ['en-us', 'en']
|
61
|
+
support_email: incommon-admin@incommonfederation.org
|
62
|
+
tags:
|
63
|
+
- refeds
|
64
|
+
- :test_tag1
|
65
|
+
groups:
|
66
|
+
- spec_set_2
|
67
|
+
description: >
|
68
|
+
Providing a secure and privacy-preserving trust fabric for research and
|
69
|
+
higher education institutions, and their partners, in the United States.
|
70
|
+
|
71
|
+
## Australian Access Federation
|
72
|
+
'urn:mace:aaf.edu.au:AAFProduction':
|
73
|
+
name: Australian Access Federation
|
74
|
+
display_name: AAF
|
75
|
+
type: federation
|
76
|
+
countries: ['au']
|
77
|
+
metadata: http://manager.aaf.edu.au/metadata/metadata.aaf.signed.complete.xml
|
78
|
+
certificate: https://manager.aaf.edu.au/metadata/metadata-cert.pem
|
79
|
+
fingerprint: ~
|
80
|
+
refeds_info: https://refeds.terena.org/index.php/FederationAAF
|
81
|
+
homepage: http://www.aaf.edu.au/
|
82
|
+
languages: ['en']
|
83
|
+
support_email: enquiries@aaf.edu.au
|
84
|
+
tags:
|
85
|
+
- refeds
|
86
|
+
groups:
|
87
|
+
- spec_set_2
|
88
|
+
description: >
|
89
|
+
The Australian Access Federation.
|
90
|
+
|
91
|
+
## Canadian Access Federation
|
92
|
+
'https://caf-fcga.ca/entity':
|
93
|
+
name: Canadian Access Federation
|
94
|
+
display_name: CAF
|
95
|
+
type: federation
|
96
|
+
countries: ['ca']
|
97
|
+
metadata: https://caf-shibops.ca/CoreServices/cafshib_metadata_signed.xml
|
98
|
+
certificate: https://caf-shibops.ca/CoreServices/cafshib_metadata_verify.pem
|
99
|
+
fingerprint: ~
|
100
|
+
refeds_info:
|
101
|
+
homepage: http://www.cuccio-cdpiuc.ca/en/index.php
|
102
|
+
languages: ['en']
|
103
|
+
support_email: ~
|
104
|
+
tags:
|
105
|
+
- refeds
|
106
|
+
groups:
|
107
|
+
- spec_set_2
|
108
|
+
description: >
|
109
|
+
Canadian Access Federation
|
110
|
+
|
111
|
+
## Partial sources disabled with comment # until complete
|
112
|
+
|
113
|
+
## Swiss Access Federation
|
114
|
+
#'urn:mace:switch.ch:SWITCHaai':
|
115
|
+
# name: Swiss Access Federation
|
116
|
+
# display_name: SWITCHaai
|
117
|
+
# type: federation
|
118
|
+
# countries: ['ch']
|
119
|
+
# metadata: http://www.switch.ch/aai/support/metadata/
|
120
|
+
# certificate: ~
|
121
|
+
# fingerprint: ~
|
122
|
+
# refeds_info: ~
|
123
|
+
# homepage: ~
|
124
|
+
# languages: []
|
125
|
+
# support_email: aai@switch.ch
|
126
|
+
# description: >
|
127
|
+
# Swiss Access Federation
|
128
|
+
|
129
|
+
## FederationCARSI
|
130
|
+
# name:
|
131
|
+
# display_name:
|
132
|
+
# type:
|
133
|
+
# countries: []
|
134
|
+
# metadata: ~
|
135
|
+
# certificate:
|
136
|
+
# fingerprint: ~
|
137
|
+
# refeds_info: ~
|
138
|
+
# homepage: ~
|
139
|
+
# languages: ~
|
140
|
+
# support_email:
|
141
|
+
# description: >
|
142
|
+
# No information listed
|
143
|
+
|
144
|
+
## FederationEdulDcz
|
145
|
+
# name:
|
146
|
+
# display_name:
|
147
|
+
# type:
|
148
|
+
# countries: []
|
149
|
+
# metadata: ~
|
150
|
+
# certificate: ~
|
151
|
+
# fingerprint: ~
|
152
|
+
# refeds_info: ~
|
153
|
+
# homepage: ~
|
154
|
+
# languages: ~
|
155
|
+
# support_email: Linden.mikael@rediris.es
|
156
|
+
# description: >
|
157
|
+
# No information listed
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
## Want more?
|
162
|
+
## Fork this project on Github, add new federation info and
|
163
|
+
## then send a pull request!
|
@@ -0,0 +1,219 @@
|
|
1
|
+
## @author Pete Birkinshaw (<pete@digitalidentitylabs.com>)
|
2
|
+
## Copyright: Copyright (c) 2011 Digital Identity Ltd.
|
3
|
+
## License: Apache License, Version 2.0
|
4
|
+
|
5
|
+
## Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
## you may not use this file except in compliance with the License.
|
7
|
+
## You may obtain a copy of the License at
|
8
|
+
##
|
9
|
+
## http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
##
|
11
|
+
## Unless required by applicable law or agreed to in writing, software
|
12
|
+
## distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
## See the License for the specific language governing permissions and
|
15
|
+
## limitations under the License.
|
16
|
+
##
|
17
|
+
|
18
|
+
module Shibkit
|
19
|
+
class MetaMeta
|
20
|
+
|
21
|
+
## Class to represent the metadata of a Shibboleth IDP or SP
|
22
|
+
class Entity < MetadataItem
|
23
|
+
|
24
|
+
require 'shibkit/meta_meta/metadata_item'
|
25
|
+
require 'shibkit/meta_meta/contact'
|
26
|
+
require 'shibkit/meta_meta/idp'
|
27
|
+
require 'shibkit/meta_meta/sp'
|
28
|
+
require 'shibkit/meta_meta/organisation'
|
29
|
+
|
30
|
+
## Element and attribute used to select XML for new objects
|
31
|
+
ROOT_ELEMENT = 'EntityDescriptor'
|
32
|
+
TARGET_ATTR = 'entityID'
|
33
|
+
REQUIRED_QUACKS = [:entity_uri]
|
34
|
+
|
35
|
+
LINE_START = "<!--"
|
36
|
+
LINE_END = "-->"
|
37
|
+
HR_CHAR = "="
|
38
|
+
|
39
|
+
## The URI of the entity
|
40
|
+
attr_accessor :entity_uri
|
41
|
+
alias :uri :entity_uri
|
42
|
+
|
43
|
+
## The URI of the entity's parent federation
|
44
|
+
attr_accessor :primary_federation_uri
|
45
|
+
|
46
|
+
## The URI of the entity's parent federation
|
47
|
+
attr_accessor :other_federation_uris
|
48
|
+
alias :secondary_federation_uris :other_federation_uris
|
49
|
+
|
50
|
+
## Has this entity object been selected to represent the service?
|
51
|
+
attr_accessor :primary
|
52
|
+
|
53
|
+
## The ID of the entity with the metadata file (not globally unique)
|
54
|
+
attr_accessor :metadata_id
|
55
|
+
|
56
|
+
## Is the entity accountable?
|
57
|
+
attr_accessor :accountable
|
58
|
+
|
59
|
+
## Is the entity part of the UK Access Management Federation?
|
60
|
+
attr_accessor :ukfm
|
61
|
+
|
62
|
+
## Is the entity using Athens?
|
63
|
+
attr_accessor :athens
|
64
|
+
|
65
|
+
## Show in normal WAYFs?
|
66
|
+
attr_accessor :hide
|
67
|
+
|
68
|
+
attr_accessor :scopes
|
69
|
+
|
70
|
+
## Organisation object for the owner of the entity
|
71
|
+
attr_accessor :organisation
|
72
|
+
|
73
|
+
## Contact object containing user support contact details
|
74
|
+
attr_accessor :support_contact
|
75
|
+
|
76
|
+
## Contact object containing technical contact details
|
77
|
+
attr_accessor :technical_contact
|
78
|
+
|
79
|
+
## Contact object containing technical contact details
|
80
|
+
attr_accessor :admin_contact
|
81
|
+
|
82
|
+
## Is the entity an IDP?
|
83
|
+
attr_accessor :idp
|
84
|
+
|
85
|
+
## Is the entity an SP?
|
86
|
+
attr_accessor :sp
|
87
|
+
|
88
|
+
alias :entity_id :entity_uri
|
89
|
+
alias :ukfm? :ukfm
|
90
|
+
alias :hide? :hide
|
91
|
+
alias :accountable? :accountable
|
92
|
+
alias :athens? :athens
|
93
|
+
alias :organization :organisation
|
94
|
+
|
95
|
+
def to_s
|
96
|
+
|
97
|
+
return uri
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
def idp?
|
102
|
+
|
103
|
+
return idp.kind_of?(::Shibkit::MetaMeta::IDP)
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
def sp?
|
108
|
+
|
109
|
+
return sp.kind_of?(::Shibkit::MetaMeta::SP)
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
def urn?
|
114
|
+
|
115
|
+
return uri.strip.downcase[0..3] == 'urn:'
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
##
|
120
|
+
def primary?
|
121
|
+
|
122
|
+
return @primary ? true : false
|
123
|
+
|
124
|
+
end
|
125
|
+
|
126
|
+
def multi_federated?
|
127
|
+
|
128
|
+
return other_federation_uris.size > 0 ? true : false
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
## All federations that this entity is a member of
|
133
|
+
def federation_uris
|
134
|
+
|
135
|
+
## All unique federations, making sure we include primary
|
136
|
+
all_fed_uris = [primary_federation_uri].concat other_federation_uris
|
137
|
+
|
138
|
+
return all_fed_uris.uniq
|
139
|
+
|
140
|
+
end
|
141
|
+
|
142
|
+
def tags=(tags)
|
143
|
+
|
144
|
+
@tags ||= []
|
145
|
+
|
146
|
+
if Shibkit::MetaMeta.config.auto_tag?
|
147
|
+
|
148
|
+
@tags << :idp if idp?
|
149
|
+
@tags << :sp if sp?
|
150
|
+
|
151
|
+
end
|
152
|
+
|
153
|
+
@tags = @tags.concat([tags].flatten).uniq
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
def tags
|
158
|
+
|
159
|
+
return @tags.nil? ? [] : @tags.collect { |t| t.to_sym }
|
160
|
+
|
161
|
+
end
|
162
|
+
|
163
|
+
def xml_comment
|
164
|
+
|
165
|
+
out = "\n" + LINE_START + (HR_CHAR * 71) + LINE_END + "\n"
|
166
|
+
out << LINE_START + " " + uri + " " + LINE_END + "\n"
|
167
|
+
out << LINE_START + (HR_CHAR * 71) + LINE_END + "\n\n"
|
168
|
+
|
169
|
+
return out
|
170
|
+
|
171
|
+
end
|
172
|
+
|
173
|
+
private
|
174
|
+
|
175
|
+
def parse_xml
|
176
|
+
|
177
|
+
self.entity_uri = @noko['entityID'].to_s.strip
|
178
|
+
self.metadata_id = @noko['ID'].to_s.strip
|
179
|
+
|
180
|
+
@other_federation_uris ||= Array.new
|
181
|
+
|
182
|
+
## Boolean flags for common/useful info
|
183
|
+
self.accountable = @noko.xpath('xmlns:Extensions/ukfedlabel:AccountableUsers').size > 0 ? true : false
|
184
|
+
self.ukfm = @noko.xpath('xmlns:Extensions/ukfedlabel:UKFederationMember').size > 0 ? true : false
|
185
|
+
self.athens = @noko.xpath('xmlns:Extensions/elab:AthensPUIDAuthority').size > 0 ? true : false
|
186
|
+
self.hide = @noko.xpath('xmlns:Extensions/wayf:HideFromWAYF').size > 0 ? true : false
|
187
|
+
|
188
|
+
@scopes = @noko.xpath('xmlns:Extensions/shibmd:Scope').collect do |sx|
|
189
|
+
|
190
|
+
sx['regexp'] == 'true' ? Regexp.new(sx.text) : sx.text
|
191
|
+
|
192
|
+
end
|
193
|
+
|
194
|
+
## IDP and SP objects, if available. Based on the same XML as their parent/entity object
|
195
|
+
self.idp = Shibkit::MetaMeta::IDP.new(@noko).filter
|
196
|
+
self.sp = Shibkit::MetaMeta::SP.new(@noko).filter
|
197
|
+
|
198
|
+
## Include Contact objects
|
199
|
+
self.support_contact = Contact.new(@noko.xpath("xmlns:ContactPerson[@contactType='support'][1]")[0]).filter
|
200
|
+
self.technical_contact = Contact.new(@noko.xpath("xmlns:ContactPerson[@contactType='technical'][1]")[0]).filter
|
201
|
+
self.admin_contact = Contact.new(@noko.xpath("xmlns:ContactPerson[@contactType='administrative'][1]")[0]).filter
|
202
|
+
|
203
|
+
## Include an organisation object
|
204
|
+
self.organisation = Organisation.new(@noko.xpath("xmlns:Organization[1]")[0]).filter
|
205
|
+
self.idp.organisation = self.organisation if idp?
|
206
|
+
self.sp.organisation = self.organisation if sp?
|
207
|
+
|
208
|
+
self.tags ||= []
|
209
|
+
|
210
|
+
log.debug " Derived entity #{self.uri} from XML"
|
211
|
+
|
212
|
+
end
|
213
|
+
|
214
|
+
end
|
215
|
+
|
216
|
+
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|