Projet

Général

Profil

0001-WIP-support-federation-file-loading-19396.patch

Paul Marillonnet, 14 novembre 2017 11:35

Télécharger (30,5 ko)

Voir les différences:

Subject: [PATCH] WIP support federation file loading (#19396)

 mellon/adapters.py          |   4 +
 mellon/app_settings.py      |  20 +-
 mellon/utils.py             |  48 +++++
 tests/federation-sample.xml | 451 ++++++++++++++++++++++++++++++++++++++++++++
 tests/test_utils.py         |  12 ++
 5 files changed, 533 insertions(+), 2 deletions(-)
 create mode 100644 tests/federation-sample.xml
mellon/adapters.py
30 30
    def get_identity_providers_setting(self):
31 31
        return app_settings.IDENTITY_PROVIDERS
32 32

  
33
    def get_federations(self):
34
        for federation in getattr(app_settings, 'FEDERATIONS', []):
35
            yield federation
36

  
33 37
    def get_idps(self):
34 38
        for i, idp in enumerate(self.get_identity_providers_setting()):
35 39
            if 'METADATA_URL' in idp and 'METADATA' not in idp:
mellon/app_settings.py
36 36
        'LOGIN_URL': 'mellon_login',
37 37
        'LOGOUT_URL': 'mellon_logout',
38 38
        'ARTIFACT_RESOLVE_TIMEOUT': 10.0,
39
        'FEDERATIONS': [],
39 40
    }
40 41

  
41 42
    @property
43
    def FEDERATIONS(self):
44
        from django.conf import settings
45
        if settings.hasattr('MELLON_FEDERATIONS'):
46
            federations = settings.MELLON_FEDERATIONS
47
        if isinstance(federations, dict):
48
            federations = [federations]
49
        return federations
50

  
51
    @property
42 52
    def IDENTITY_PROVIDERS(self):
43 53
        from django.conf import settings
54
        idps = []
44 55
        try:
45
            idps = settings.MELLON_IDENTITY_PROVIDERS
56
            if hasattr(settings, 'MELLON_IDENTITY_PROVIDERS'):
57
                idps = settings.MELLON_IDENTITY_PROVIDERS
58
            elif not hasattr(settings, 'MELLON_FEDERATIONS'):
59
                raise AttributeError
46 60
        except AttributeError:
47 61
            from django.core.exceptions import ImproperlyConfigured
48
            raise ImproperlyConfigured('The MELLON_IDENTITY_PROVIDERS setting is mandatory')
62
            raise ImproperlyConfigured('Either the MELLON_IDENTITY_PROVIDERS '
63
                                       'or the MELLON_FEDERATIONS settings '
64
                                       'are mandatory')
49 65
        if isinstance(idps, dict):
50 66
            idps = [idps]
51 67
        return idps
mellon/utils.py
5 5
import isodate
6 6

  
7 7
from django.contrib import auth
8
from django.core.exception import ValidationError
8 9
from django.core.urlresolvers import reverse
10
from django.core.validators import URLValidator
9 11
from django.template.loader import render_to_string
12
from django.utils.text import slugify
10 13
from django.utils.timezone import make_aware, now, make_naive, is_aware, get_default_timezone
11 14
from django.conf import settings
12 15
from django.utils.six.moves.urllib.parse import urlparse
......
83 86
                logger.error(u'bad metadata in idp %r', idp['ENTITY_ID'])
84 87
                logger.debug(u'lasso error: %s', e)
85 88
                continue
89
        for federation in get_federations():
90
            fedmd = None
91
            pemcert = None
92
            if (isinstance(federation, 'tuple') and len(federation) == 2):
93
                self.logger.info('Loading local cert-based federation %r',
94
                        federation) # XXX
95
                if federation[1].endswith('.pem'):
96
                    fedmd = federation[0]
97
                    pemcert = federation[1]
98
            else:
99
                urlval = URLValidator()
100
                try:
101
                    urlval(federation)
102
                except ValidationError as e:
103
                    self.logger.info('Loading file-based federation %s',
104
                            federation)
105
                    fedmd = federation
106
                else:
107
                    self.logger.info('Fetching and loading url-based federation %s',
108
                            federation)
109
                    fedmd = slugify(federation)[:250]
110
                    try:
111
                        response = urllib2.urlopen(federation)
112
                        cache.get_or_set(fedmd, response.read(), 600)
113
                    except Exception, e:
114
                        self.logger.error('Invalid federation metadata url %s',
115
                                federation)
116
                        continue
117

  
118
            try:
119
                server.loadMetadata(lasso.PROVIDER_ROLE_IDP,
120
                                    fedmd, pemcert, None,
121
                                    lasso.SERVER_LOAD_METADATA_FLAG_DEFAULT)
122

  
123
            except lasso.Error, e:
124
                logger.error(u'bad metadata for federation %r', federation)
125
                logger.debug(u'lasso error: %s', e)
126
                continue
86 127
        cache[root] = server
87 128
        settings._MELLON_SERVER_CACHE = cache
88 129
    return settings._MELLON_SERVER_CACHE.get(root)
......
112 153
                yield idp
113 154

  
114 155

  
156
def get_federations():
157
    for adapter in get_adapters():
158
        if hasattr(adapter, 'get_federations'):
159
            for federations in adapter.get_federations():
160
                yield federations
161

  
162

  
115 163
def flatten_datetime(d):
116 164
    d = d.copy()
117 165
    for key, value in d.iteritems():
tests/federation-sample.xml
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?><md:EntitiesDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:mdattr="urn:oasis:names:tc:SAML:metadata:attribute" xmlns:mdrpi="urn:oasis:names:tc:SAML:metadata:rpi" xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui" xmlns:pyff="http://pyff.io/NS" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:shibmd="urn:mace:shibboleth:metadata:1.0" xmlns:xrd="http://docs.oasis-open.org/ns/xri/xrd-1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ID="_20171018T113001Z" Name="https://federation.renater.fr/" cacheDuration="PT1H" validUntil="2017-10-27T11:30:01Z"><ds:Signature>
2
<ds:SignedInfo>
3
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
4
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
5
<ds:Reference URI="">
6
<ds:Transforms>
7
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
8
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
9
</ds:Transforms>
10
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
11
<ds:DigestValue>JKdLdd5yGvkFdb1fCAByMMnurIKYhZepRouZfOjIUrg=</ds:DigestValue>
12
</ds:Reference>
13
</ds:SignedInfo>
14
<ds:SignatureValue>
15
OTexfi8c63TsP1V9j5m6digA2NomUfqBtT8pPKhwdqEDQS5qLh6fxvT+wWkP6JaIhkP8nxwpbArl
16
7cUHkRv5ibZzcknIAjXYMhsSTtFQUq89OMcDHtZHG54jiKyHPhu2+XEbvv6DsAYanYC6SHEnGjNG
17
opnOEUB2XqeycsvvTQQIuWZEoABTVcKYyk2CW7Ij5EUmPOAPiidtbt8lzrtkV6dwLbkyoEbChAyj
18
emrL/oS01aJgT9sQoJxR8lyRMGiZ/BwQqYTareiKwOXLPdGThzsfZXD8de9T1xuysILaAM7sHPJV
19
QfrQJm80Zo2MM/GnhJTO9rc4m3kRnRhqmA6qMw==
20
</ds:SignatureValue>
21
<ds:KeyInfo>
22
<ds:KeyValue>
23
<ds:RSAKeyValue>
24
<ds:Modulus>
25
71+vTf66BPgYUF7sm4T++W69qMVyGQn9wNqpBLc6sp53eq/JRTOUD26Yehjsld5qN52Bv2r5QG7o
26
4VU123akXUYzupvq1f+tmF9NwYa7MPEPFzCzJHhNXjZNRxcsW1WLW34fhQCm0oak3oSPoNo5qeGi
27
jNsTSkgSt1mPH0P8d95af2VJnT6zbrclxvH4emqpT9oGLsWqKWLlIbZ7u1PUjuNVwLHuj909/apm
28
C13RBIpV52fey4qey34bnRHdCTknZeN/TJLTJ9hMWzz9TbdjfIFaiF7MeY+OYRXzUJeQuHHMu/2I
29
emkoR26mYi6irvmx8AdPcPCwcRKw2Ca4xLhbNw==
30
</ds:Modulus>
31
<ds:Exponent>AQAB</ds:Exponent>
32
</ds:RSAKeyValue>
33
</ds:KeyValue>
34
<ds:X509Data>
35
<ds:X509Certificate>
36
MIIC9zCCAd+gAwIBAgIEfe6j3jANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDEyFTQU1MIE1ldGFk
37
YXRhIFNpZ25pbmcgQ2VydGlmaWNhdGUwHhcNMTYwNzI5MDczNjM4WhcNMjYwNjA3MDczNjM4WjAs
38
MSowKAYDVQQDEyFTQU1MIE1ldGFkYXRhIFNpZ25pbmcgQ2VydGlmaWNhdGUwggEiMA0GCSqGSIb3
39
DQEBAQUAA4IBDwAwggEKAoIBAQDvX69N/roE+BhQXuybhP75br2oxXIZCf3A2qkEtzqynnd6r8lF
40
M5QPbph6GOyV3mo3nYG/avlAbujhVTXbdqRdRjO6m+rV/62YX03Bhrsw8Q8XMLMkeE1eNk1HFyxb
41
VYtbfh+FAKbShqTehI+g2jmp4aKM2xNKSBK3WY8fQ/x33lp/ZUmdPrNutyXG8fh6aqlP2gYuxaop
42
YuUhtnu7U9SO41XAse6P3T39qmYLXdEEilXnZ97Lip7LfhudEd0JOSdl439MktMn2ExbPP1Nt2N8
43
gVqIXsx5j45hFfNQl5C4ccy7/Yh6aShHbqZiLqKu+bHwB09w8LBxErDYJrjEuFs3AgMBAAGjITAf
44
MB0GA1UdDgQWBBTT88iZzWO+hN9SBUkpx871lmTuLTANBgkqhkiG9w0BAQsFAAOCAQEABoPpODry
45
XwiM5jjtqk6veR02FevCKHpZP6Od7Kqcfs6lg5LcQmGUOgpmW3Gg4UMjBYkgARsT2Nsnah1CJqa8
46
cjvv8p5KEIhY0hVS8iMJnrb3PDeiFSeP4xSfct/6z/ebV4+QFl22bsm2zpAC6BpFz8+IJ/jAmQzT
47
Vob4MAUeQPnwwzm3xz6yanLZx7BK5cfrTCa+hrarNQCboRjXPwiejF8WRCxpgRHH6yNs5QH/Z6o5
48
e3tUP7uEpn2Ob+kcLsEMGb9DghkoDAgkHCOZeTy+7hgxt+/T94cLTa58gVtvEOnd0GuL7Vfd+IVd
49
XgSard8RfR3OyZlf6M4aSGQA73sskQ==
50
</ds:X509Certificate>
51
</ds:X509Data>
52
</ds:KeyInfo>
53
</ds:Signature><md:EntityDescriptor entityID="https://access-check.edugain.org/simplesaml/saml2/idp/metadata.php">
54
			<md:Extensions>
55
				<mdrpi:RegistrationInfo registrationAuthority="https://federation.renater.fr/" registrationInstant="2015-01-30T15:32:58Z">
56
					<mdrpi:RegistrationPolicy xml:lang="en">https://services.renater.fr/federation/en/metadata_registration_practice_statement</mdrpi:RegistrationPolicy>
57
				</mdrpi:RegistrationInfo>
58
			</md:Extensions>
59
		<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
60
			<md:Extensions>
61
    				<shibmd:Scope regexp="false">access-check.edugain.org</shibmd:Scope>
62

  
63
			    <mdui:UIInfo>
64

  
65
			      <mdui:DisplayName xml:lang="en">eduGAIN Access Check</mdui:DisplayName>
66

  
67
			      <mdui:Logo height="16" width="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAQAAAAEABcxq3DAAABbUlEQVQoz52RPW4UQRCFv6ru6fnZNSxCJuVKpFwAicR3IUI+AakvhQhI7JU8M/1T3QQzsg1sAhWV3qtPVaonfPrCX9W+fpTP3y7otzceGJKJxCiujpVUkCv0+m3K967hixUfWgWSHwAPxG6UqtIFbEFHGoCqR721BX+wirO8LVGg+a6amEXXjqxhM5ZxNFPvX1Odocn5ZwB7HCn4hWI42wxD6KWUBVfIZxXd9J2zNhHFmro2Gx3QPKSReGCiV40ESM/A1NcxTDnn7HvLFViXBRZ6MKJnmwaktca/lFzO4fZG7n5e0D9cK4DjFI69yrGbwvhqP7KWp7kR99QrQAn3cW5N5/SQ1rivDgdUCUegFfkDkKF26TG7FijzZoS0sM7kM7D6gncvgG5d7cEdu6wN+v3R/cRwQgaAdnA2vACQvn9Tk6NNqjtwjis1Iyp4JOpafwvu3ZAYa3TV2fBjBnjfe8uLKErOZLk6fU//lcMvhuSrh7MzMwcAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMDctMjBUMTA6NTA6MTErMDI6MDCDfj0WAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTA3LTIwVDEwOjUwOjExKzAyOjAw8iOFqgAAAABJRU5ErkJggg==</mdui:Logo>
68
			      <mdui:InformationURL xml:lang="fr">http://www.renater.fr</mdui:InformationURL>
69
			      <mdui:Description xml:lang="en">eduGAIN Access Check allows administrators of a Service Provider (SP) registered in eduGAIN to create test accounts with different profiles to validate the behaviour and test federated login. The test accounts can only be used to access own services.</mdui:Description>
70
          		      <mdui:DisplayName xml:lang="fr">eduGAIN Access Check</mdui:DisplayName>
71
          		      <mdui:Description xml:lang="fr">eduGAIN Access Check allows administrators of a Service Provider (SP) registered in eduGAIN to create test accounts with different profiles to validate the behaviour and test federated login. The test accounts can only be used to access own services.</mdui:Description>
72
      			    </mdui:UIInfo>
73
			</md:Extensions>
74
				<md:KeyDescriptor use="signing">
75
<ds:KeyInfo>
76

  
77
					  <ds:X509Data>
78
					    <ds:X509Certificate>
79
					      MIID2zCCAsOgAwIBAgIJAJpdV2MFitUqMA0GCSqGSIb3DQEBBQUAMIGDMQswCQYD
80
VQQGEwJGUjEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MQ4wDAYDVQQKDAVHRUFOVDEd
81
MBsGA1UEAwwUdGVzdC1pZHAuZWR1Z2Fpbi5vcmcxLjAsBgkqhkiG9w0BCQEWH3Rl
82
c3RpZHBhY2NvdW50bWFuYWdlckBnZWFudC5uZXQwHhcNMTQxMjE4MTAxODU5WhcN
83
MjQxMjE3MTAxODU5WjCBgzELMAkGA1UEBhMCRlIxFTATBgNVBAcMDERlZmF1bHQg
84
Q2l0eTEOMAwGA1UECgwFR0VBTlQxHTAbBgNVBAMMFHRlc3QtaWRwLmVkdWdhaW4u
85
b3JnMS4wLAYJKoZIhvcNAQkBFh90ZXN0aWRwYWNjb3VudG1hbmFnZXJAZ2VhbnQu
86
bmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo48FFP0P/81e3WHb
87
U91F/TYDZC/JypEqO2XQNH50baXpk2JrJFVFOWdgdK6qWHsLznuxngRsfOasAaVA
88
Ob1Bf3g2xgPUd2htSLxds+o/Y24DOM6ZairxbWJk2rOvLhJFchlrcNWCpMtUCkfJ
89
xmqGmeo93XAud5byj3wQ1NuH2o8rjTPAkMgQdr8D2b8EG1NYEH00AqRlXZTFCWGL
90
KDEuZwyta6vgMQYT4K6UF/F+HWF2wzbmVgRTHguJ0rzNqz6t+9CtLkhyZO+/57Ro
91
4U0ikshVWkUOENPKCnB1t+ebs/AsNozbIGA/HcdtwUwDgIowv/K0hdnLDC1vz6/S
92
F3rnGQIDAQABo1AwTjAdBgNVHQ4EFgQUgWN9jmJxOEHYU5m8D0atl895HxowHwYD
93
VR0jBBgwFoAUgWN9jmJxOEHYU5m8D0atl895HxowDAYDVR0TBAUwAwEB/zANBgkq
94
hkiG9w0BAQUFAAOCAQEAXvlBHMaBK6m0PQNanTqGBRdRAFt8Xkr5texD5mPTmS/7
95
nqnxlN0orqYWGCaARmQE+T77EB2a2n9g2s130pUXwJxcbUwIOdPKH6CMKEHT/512
96
bndJXQ3DyhkuVSLtRFOdfleIhi8qUkNC9FWxM4jDHDTTQtNEHnCjFxlhxw+ri5QJ
97
AVKpH9MkcuIkM6Jx+QhNwTDwCRIJffoDOH420yR5EWx/sQ4tjKQGiFOPv/WHFjXd
98
LqHU+X8ErzxeNmUHHST6pHePWRCMtoPTdCPhEroJhou6NMHh8ylQOIVHt6gggc7r
99
kUWMUybDUxPp49qMeNkdKqFPby2aW7ouKRoOXuxZhg==
100
					    </ds:X509Certificate>
101
					  </ds:X509Data>
102

  
103
					</ds:KeyInfo>
104
				</md:KeyDescriptor>
105

  
106

  
107

  
108

  
109

  
110

  
111
			<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
112

  
113

  
114

  
115
	        <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://access-check.edugain.org/simplesaml/saml2/idp/SSOService.php"/>
116

  
117

  
118

  
119
		</md:IDPSSODescriptor>
120

  
121

  
122

  
123
		<md:Organization>
124

  
125
			<md:OrganizationName xml:lang="en">eduGAIN Access Check</md:OrganizationName>
126
			<md:OrganizationDisplayName xml:lang="en">eduGAIN Access Check</md:OrganizationDisplayName>
127
			<md:OrganizationURL xml:lang="en">http://www.renater.fr</md:OrganizationURL>
128

  
129
		</md:Organization>
130

  
131

  
132
			    <md:ContactPerson contactType="technical">
133
			     <md:EmailAddress>edugain-integration@geant.net</md:EmailAddress>
134
		        </md:ContactPerson>
135

  
136

  
137
	</md:EntityDescriptor><md:EntityDescriptor entityID="https://aishib.agropolis.fr/idp/shibboleth">
138
			<md:Extensions>
139
				<mdrpi:RegistrationInfo registrationAuthority="https://federation.renater.fr/" registrationInstant="2013-06-06T11:49:20Z">
140
					<mdrpi:RegistrationPolicy xml:lang="en">https://services.renater.fr/federation/en/metadata_registration_practice_statement</mdrpi:RegistrationPolicy>
141
				</mdrpi:RegistrationInfo>
142
			</md:Extensions>
143
		<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol urn:mace:shibboleth:1.0 urn:oasis:names:tc:SAML:2.0:protocol">
144
			<md:Extensions>
145
    				<shibmd:Scope regexp="false">agropolis.fr</shibmd:Scope>
146

  
147
			    <mdui:UIInfo>
148

  
149
			      <mdui:DisplayName xml:lang="en">Agropolis International</mdui:DisplayName>
150

  
151
			      <mdui:Logo height="16" width="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAQAAAAEABcxq3DAAACPUlEQVQoz21SPW8TQRR8u7d3ju34Er6UCHACRqK4Bjk0oDSEjiYSBQVS8k9AkWgp+AuUASGEaCASkoPcgARVMF8iTnxJwMFJfL47397u3u6jsGVFwLzmFTN6ozdDEBEAAOD4kiRJsVgkhMA/YMfZzc3NVstnzGq1/KXlJfgf2Ii9XquVZ2YWbi5Io4MsbfPeZK4wRm0AOH6KICIivq2tV6/O5cYLHztbW9FvYTKuZaLk7PjpW+UrJXtspCHGmGazCQBnZ8svtj/0tbAINYhcy1DyThpRhHtztyedwkBDAWBnZ6dSqbzZ+7THu0IraTJplDSZ0JnQ2Y+482jj1cgSRUTHdrhW9fa3SKaxErFKIyUiKaIsjVQaKf5s631HxP1+X2vNwjB0J9zd+OgnD044Ra4lI5ZBw7XqyeRQREciaqe9xoE/K/OFfIENnqBM1uZBqlWBOYxQjYZnqieTThru8zCU3AASIAjIXNellGLePkjCUPICy1mEDAShSg7SqCsTBtQ7WfY3vlarVUYpdUsuAs5PXV7dfpe3HEYtjSbNZJwJoRUi3rl4fSrvfufctm0ySA0RD0V84+WDL1EbCCDCYIDApeKZ+uKK6faDIPA8jw7jIORUbry2eH+5Mu8ARTSAkCPW3QvX6osrE+B8bjQ8zxu2aACDaIwxxuzzsLbbePj88a8k0Mb4vr/2ei3LMoOIiGRU0iGGVuDp6pNz5fNSiKnpac/zgAABMuzSXwIggIjdbrdUKjHGYGQaAAD+AJBJecXxnEvWAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTA3LTIwVDEwOjQ4OjE1KzAyOjAwpWiGMQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0wNy0yMFQxMDo0ODoxNSswMjowMNQ1Po0AAAAASUVORK5CYII=</mdui:Logo>
152
			      <mdui:InformationURL xml:lang="fr">http://www.agropolis.fr</mdui:InformationURL>
153

  
154
          		      <mdui:DisplayName xml:lang="fr">Agropolis International</mdui:DisplayName>
155

  
156
      			    </mdui:UIInfo>
157
			</md:Extensions>
158
				<md:KeyDescriptor use="signing">
159
<ds:KeyInfo>
160

  
161
					  <ds:X509Data>
162
					    <ds:X509Certificate>
163
					      MIIDNzCCAh+gAwIBAgIUYY3sGXwChkj2CRy6QFDvkdj2zlAwDQYJKoZIhvcNAQEF
164
BQAwHjEcMBoGA1UEAxMTYWlzaGliLmFncm9wb2xpcy5mcjAeFw0xMzA1MTUxMzM3
165
MTJaFw0zMzA1MTUxMzM3MTJaMB4xHDAaBgNVBAMTE2Fpc2hpYi5hZ3JvcG9saXMu
166
ZnIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCxrDy6lrhIBjcxv16n
167
4UJ2cEMYPO4wSmfDwhO6feoSIEuIblYRHE2nQKirMokwD6seF4rbDHyxLXg/ColL
168
VLv+0CJteIOZjSCgSN90WzQRrC1Ex5sJfPu6yPEXvW8H1906gEg6ok8rlCIHRGfE
169
15pHK5eqxQS5f2n8c2t/Uk33/FBj79/hb3Cd7vE4mdlvReD3AFswC0lV4bPmj3Ka
170
KUuMj9xwipwnfWCu6p2/ZJF4M3ADU5grXHJ2Vqmd8DWm5raaObKjYwJddbRBByI8
171
bJJLIwAQQmX4Dh4hf1QKlf2oqWPWVQxLQp0erL1U8IWmj1RG8TTH9xOJl6kkEhYq
172
Z2gfAgMBAAGjbTBrMEoGA1UdEQRDMEGCE2Fpc2hpYi5hZ3JvcG9saXMuZnKGKmh0
173
dHBzOi8vYWlzaGliLmFncm9wb2xpcy5mci9pZHAvc2hpYmJvbGV0aDAdBgNVHQ4E
174
FgQU9A7iQ8Qo+t2JCpKuOOV9YBoYs4MwDQYJKoZIhvcNAQEFBQADggEBAG0LOW6I
175
F+M8n2NpzyQjfVCJCA6QhWjbXrfemiPJFZGZZb2dVmHof4yCpCUYgHOBoZaXPOlB
176
nLYsUWvFZ6V2GELZpLHzHSSrYidieW07qQkh1DwcIYpvtZgLviOtT/tCEGsk925f
177
DUoGdeIqpqt54WZcW9+TbKicvjg3JT4BFOQ17bFNwPW+YjTbvsWYxen+e0mRp4vM
178
V0yMu2f3bccVhePASSZGL3yod3sJ1dPvlrJO9c35BekhtirolVjZqMQ0AYPVifua
179
yIU0dWXsZkAOcBL9kZFbJcYRUIxMgvp8U2Zdv1+ZlwOyXnnWDOOh9wjuT7FAyObU
180
ChvjHlgZHkvLwJI=
181
					    </ds:X509Certificate>
182
					  </ds:X509Data>
183

  
184
					</ds:KeyInfo>
185
				</md:KeyDescriptor>
186

  
187

  
188

  
189

  
190

  
191
			<md:NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</md:NameIDFormat>
192
			<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
193

  
194

  
195
			<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://aishib.agropolis.fr/idp/profile/SAML2/POST/SSO"/>
196

  
197
	        <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://aishib.agropolis.fr/idp/profile/SAML2/Redirect/SSO"/>
198

  
199

  
200
			<md:SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest" Location="https://aishib.agropolis.fr/idp/profile/Shibboleth/SSO"/>
201

  
202

  
203
		</md:IDPSSODescriptor>
204

  
205

  
206

  
207
		<md:Organization>
208

  
209
			<md:OrganizationName xml:lang="en">Agropolis International</md:OrganizationName>
210
			<md:OrganizationDisplayName xml:lang="en">Agropolis International</md:OrganizationDisplayName>
211
			<md:OrganizationURL xml:lang="en">http://www.agropolis.fr</md:OrganizationURL>
212

  
213
		</md:Organization>
214

  
215

  
216

  
217
			    <md:ContactPerson contactType="technical">
218
				 <md:SurName>Jean Cerda</md:SurName>
219
				 <md:EmailAddress>cerda@agropolis.fr</md:EmailAddress>
220
		        </md:ContactPerson>
221

  
222

  
223

  
224
			    <md:ContactPerson contactType="technical">
225
				 <md:SurName>Jean-Pierre  Allano</md:SurName>
226
				 <md:EmailAddress>allano@agropolis.fr</md:EmailAddress>
227
		        </md:ContactPerson>
228

  
229

  
230

  
231

  
232
	</md:EntityDescriptor><md:EntityDescriptor entityID="https://ambre.vetagro-sup.fr/idp/shibboleth">
233
			<md:Extensions>
234
				<mdrpi:RegistrationInfo registrationAuthority="https://federation.renater.fr/" registrationInstant="2013-01-14T16:11:53Z">
235
					<mdrpi:RegistrationPolicy xml:lang="en">https://services.renater.fr/federation/en/metadata_registration_practice_statement</mdrpi:RegistrationPolicy>
236
				</mdrpi:RegistrationInfo>
237
			</md:Extensions>
238
		<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol urn:mace:shibboleth:1.0 urn:oasis:names:tc:SAML:2.0:protocol">
239
			<md:Extensions>
240
    				<shibmd:Scope regexp="false">vetagro-sup.fr</shibmd:Scope>
241

  
242
			    <mdui:UIInfo>
243

  
244
			      <mdui:DisplayName xml:lang="en">Vetagro Sup</mdui:DisplayName>
245

  
246
			      <mdui:Logo height="16" width="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAQAAAAEABcxq3DAAAB/klEQVQ4y2NkQAP///+X+/jxI/PO7dujP3/7kf7v778ffDzciw2MDFaqq6t/Y2RkfIysngndAEZGxkezZ8/25xEQqVDTs5eRVrNU4RQUL7x9+7YtumasBjAwMDBISIgbcvBKct998p7h1fvfDKyc4nz//jF6yjAwSBNlwM+fP3/9/PmT4dbl4wysrCwMf//9Z/r7959UcFISD1EGPH107xgfD9sbTg52hrcvHjDw87Aw/Pz+7tLEefNuEmWAm6ffxvu3Ll4zMjZleHz/KsO7lw+f3bh+czs2tVgNsLS0fPfs4b3VnKy//wrycW84e2L/uobmtg0MpIKurt6N////Z8jPzxcnWTMDAwPD79//tbq7+9bhU8OMTfD//8cMP79L1X/8tjxMQYHXT0Uh88aBgyuvEW3Aly+8ntw8jLU3bx20cnH/xPz2jTyvk9OGpTt3NhIOxP//GRgkJGR8tPVeyElIvWA4dfIqg57Bff0nD+eHExULIb5dqkYmYgYm5r8YPH3vMzx//omBk+edpI4+vxVRBnz5zPqbi4vt7a9fv//9+cvAYG79jIGZmZWBg4NJiCgDdh4sfHD/7u9j714Z/BYWiGBQVkxjePNK8+erV5+uYDOABTMM/nP09y9Z8+OHgNjli9ahf//++8vGwrlAS0tp/v///7kYGRm/IasHAIVTy8DG/VpJAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTA3LTIwVDEwOjUwOjA5KzAyOjAwfDtz7wAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0wNy0yMFQxMDo1MDowOSswMjowMA1my1MAAAAASUVORK5CYII=</mdui:Logo>
247
			      <mdui:InformationURL xml:lang="fr">http://www.vetagro-sup.fr</mdui:InformationURL>
248

  
249
          		      <mdui:DisplayName xml:lang="fr">Vetagro Sup</mdui:DisplayName>
250

  
251
      			    </mdui:UIInfo>
252
			</md:Extensions>
253
				<md:KeyDescriptor use="signing">
254
<ds:KeyInfo>
255

  
256
					  <ds:X509Data>
257
					    <ds:X509Certificate>
258
					      MIIDPDCCAiSgAwIBAgIVAL9PsuadPSIZcMHNxlK/oevezmzWMA0GCSqGSIb3DQEB
259
BQUAMB8xHTAbBgNVBAMTFGFtYnJlLnZldGFncm8tc3VwLmZyMB4XDTEyMTEwODEw
260
MTQwNFoXDTMyMTEwODEwMTQwNFowHzEdMBsGA1UEAxMUYW1icmUudmV0YWdyby1z
261
dXAuZnIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCc/ptfpmkomwmT
262
4RsID+1Ce1dX0eUjcLgSOZN8hVpHWLag2ERWkpmvB5aK7BAFcI5i//Gk80tAiasu
263
JtlZhBnEw54aTJRGpyL2CVkHyl6SMRxprIi1Ji67IoGqEgUeGaheAxo+tG5e1WSc
264
bIbldcSKdwvjAV+7HSB4C6NqLsAzJH25++yaRH2uf2LTD0TDzNR9Q2hVj/VyYWR+
265
K3HWI1Snjn/i7aFfZZhYmBkwHuQOaPhwCM+khikg5XicMsxUhHCMi93UgHGIsdkr
266
IEGj4xydBTUKsLaykeuFS8EgXbWwCLGkeX76w8xDoFIpnppU/yFd9v7Zg3EBfn4p
267
kTW3GdIjAgMBAAGjbzBtMEwGA1UdEQRFMEOCFGFtYnJlLnZldGFncm8tc3VwLmZy
268
hitodHRwczovL2FtYnJlLnZldGFncm8tc3VwLmZyL2lkcC9zaGliYm9sZXRoMB0G
269
A1UdDgQWBBTPTqWkVHrHXFjmxMWkNt/sp2h5ozANBgkqhkiG9w0BAQUFAAOCAQEA
270
FvXMtfBUmRZCzz8CjanGzr1TBUPmnkrKci5AtkseKw9YlfUmBXTHB01y697nYq6m
271
RB6KhvfW212h9CF0IOEEjoadgDhXqGYhq8PnAOtT4Ty3XDy8SbRh8aQWfvnfSngv
272
FdpHRiSpj5UXXuT5zTtkf59h58XKtEfCkMbUzvdOgUobJzpD0WISmQHPQnx+Neg6
273
9j7oMRrDiZjS39Om8Imu9xvsnddDM3PlsDBIsvrr1o7K5iLkEdR1YYX0ZNDbiFuw
274
QXXl2dwQPB8KrScPUvCe57slU2gFQvvIBzjQysxC6V6TPSuM3A/ee56lACuB3jKj
275
oYkHQc5Gj/1rSMLmu9aLMg==
276
					    </ds:X509Certificate>
277
					  </ds:X509Data>
278

  
279
					</ds:KeyInfo>
280
				</md:KeyDescriptor>
281

  
282

  
283

  
284

  
285

  
286
			<md:NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</md:NameIDFormat>
287
			<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
288

  
289

  
290
			<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://ambre.vetagro-sup.fr/idp/profile/SAML2/POST/SSO"/>
291

  
292
	        <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://ambre.vetagro-sup.fr/idp/profile/SAML2/Redirect/SSO"/>
293

  
294

  
295
			<md:SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest" Location="https://ambre.vetagro-sup.fr/idp/profile/Shibboleth/SSO"/>
296

  
297

  
298
		</md:IDPSSODescriptor>
299

  
300

  
301

  
302
		<md:Organization>
303

  
304
			<md:OrganizationName xml:lang="en">Vetagro Sup</md:OrganizationName>
305
			<md:OrganizationDisplayName xml:lang="en">Vetagro Sup</md:OrganizationDisplayName>
306
			<md:OrganizationURL xml:lang="en">http://www.vetagro-sup.fr</md:OrganizationURL>
307

  
308
		</md:Organization>
309

  
310

  
311

  
312
			    <md:ContactPerson contactType="technical">
313
				 <md:SurName>Nicolas Aulas</md:SurName>
314
				 <md:EmailAddress>nicolas.aulas@vetagro-sup.fr</md:EmailAddress>
315
		        </md:ContactPerson>
316

  
317

  
318

  
319

  
320

  
321

  
322
	</md:EntityDescriptor><md:EntityDescriptor entityID="https://antimoine.insa-strasbourg.fr/idp/shibboleth">
323
			<md:Extensions>
324
				<mdrpi:RegistrationInfo registrationAuthority="https://federation.renater.fr/" registrationInstant="2014-02-11T08:44:08Z">
325
					<mdrpi:RegistrationPolicy xml:lang="en">https://services.renater.fr/federation/en/metadata_registration_practice_statement</mdrpi:RegistrationPolicy>
326
				</mdrpi:RegistrationInfo>
327
			</md:Extensions>
328
		<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol urn:mace:shibboleth:1.0 urn:oasis:names:tc:SAML:2.0:protocol">
329
			<md:Extensions>
330
    				<shibmd:Scope regexp="false">insa-strasbourg.fr</shibmd:Scope>
331

  
332
			    <mdui:UIInfo>
333

  
334
			      <mdui:DisplayName xml:lang="en">INSA Strasbourg</mdui:DisplayName>
335

  
336
			      <mdui:Logo height="16" width="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAq1BMVEXeAACEhoTWz87nQTn3oqXnIBjvgnvWlpT/5+fnEAjvZWOltrXnNDH3mpT/9/fnCAD/4+fvioz3x8bnVVL3qq3nKCnvkpTnHBjvcXP3sq3vgoT/7+/nFBDnODH3mpz////nDAj3z87vlpTveXv3vr3nAACMmpznRUL3pqXnJCHnFAj/+//nDADvjoz3y87vXVr3rq3nLCnvdXP3srXvhoT/8/fvODH3npz3lpQaie6kAAAACXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAQAAAAEABcxq3DAAAAe0lEQVQY053OwQqCQBhF4VM22VSMMWrFGP2kkIpUQ1nz/m8Ws20TeFeHb3WRnzEBBjO8xRjZrURi0TFiy+UITjTpjIKaOndZuDSGxF0j9G1+e7CuLN1nE2F7VI28tAoqMMezP1ieFOOp7RPueBXKSqdnMq8Wg66nPP0LX4uIG4jEwJ0sAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTA3LTIwVDEwOjQ5OjA0KzAyOjAwIHfmJQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0wNy0yMFQxMDo0OTowNCswMjowMFEqXpkAAAAASUVORK5CYII=</mdui:Logo>
337
			      <mdui:InformationURL xml:lang="fr">http://www.insa-strasbourg.fr</mdui:InformationURL>
338

  
339
          		      <mdui:DisplayName xml:lang="fr">INSA Strasbourg</mdui:DisplayName>
340

  
341
      			    </mdui:UIInfo>
342
			</md:Extensions>
343
				<md:KeyDescriptor use="signing">
344
<ds:KeyInfo>
345

  
346
					  <ds:X509Data>
347
					    <ds:X509Certificate>
348
					      MIIDUDCCAjigAwIBAgIVAIbX8U0uAqAhuXm1jWxiFpggtDTDMA0GCSqGSIb3DQEB
349
CwUAMCQxIjAgBgNVBAMMGXNvdWZyZS5pbnNhLXN0cmFzYm91cmcuZnIwHhcNMTYw
350
OTI3MTIzNjIxWhcNMzYwOTI3MTIzNjIxWjAkMSIwIAYDVQQDDBlzb3VmcmUuaW5z
351
YS1zdHJhc2JvdXJnLmZyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
352
sEE02sLRPAG5N81DMHEeGpI2MYF8yG/RiwH07cFIlLqgV80ewOmi0FWPYijxMb8A
353
bmx0RwUMvJBVI6WMxtT9fykhID20k8rWOuYOzvaynzVqCktqVgKoEAxP1PFE9b0n
354
iGKFprjjNl9ZD90GOUsxbAO7yXG9Q4WBa/eThl6XkUvNkSaZp5hcdWrgcAdsae3q
355
iD/uxFa38NXNNeRLGyfxjd2K5qYSzbwBza9s9TOq1+pfw7sxu3/4BnfQ0RLGO6co
356
4tH4Mufh0ome4cyYk4pvW5DOd1AznxDb8HpqvE0zwEsa69c/FDX0akgFZydmc77a
357
j6USn6JKjjbO49yGtG1gVQIDAQABo3kwdzAdBgNVHQ4EFgQUjzMsxZYiokPYxper
358
9zadM8J0F0kwVgYDVR0RBE8wTYIZc291ZnJlLmluc2Etc3RyYXNib3VyZy5mcoYw
359
aHR0cHM6Ly9zb3VmcmUuaW5zYS1zdHJhc2JvdXJnLmZyL2lkcC9zaGliYm9sZXRo
360
MA0GCSqGSIb3DQEBCwUAA4IBAQBFJKsiS3yfWuDB/E+iqQ0TuQJzL5+JIcloN0dw
361
BFxW3VZOju15zeQ7LwRBg9S4SGLMPJU+LM1lvr68cK9brut/FjF51SETIXEeCWo3
362
7+PIqgOCzraLNinmpU/OtN8ENalOPvpS6Jvbd23qB2t+IqOtZ+j15b0Yq4/on1E3
363
W2F9CVzKpe4EwmmtCPQbe7U1wvhgFylEx797pex8veWs79YSYwqvcKMh79dzl8Fo
364
/CgsO5pDrfKmc6SGMkByq75dZj+PqhZDzZ9EFTxbrXOTaS08VRN6a5Rh2iYRnGxq
365
yZl66tPcaIm5PHgOEmu5X4lPkUoY+Jt36Gj3SGCbYt8qH5S0
366
					    </ds:X509Certificate>
367
					  </ds:X509Data>
368

  
369
					</ds:KeyInfo>
370
				</md:KeyDescriptor>
371

  
372

  
373

  
374
				<md:KeyDescriptor use="signing">
375
				       <ds:KeyInfo>
376
					  <ds:X509Data>
377
					    <ds:X509Certificate>
378
					      MIIDXDCCAkSgAwIBAgIVAKI+qiqDCk9wTTqn7OVAoZrvj/CpMA0GCSqGSIb3DQEB
379
BQUAMCcxJTAjBgNVBAMTHGFudGltb2luZS5pbnNhLXN0cmFzYm91cmcuZnIwHhcN
380
MTQwMTEzMTAzOTU4WhcNMzQwMTEzMTAzOTU4WjAnMSUwIwYDVQQDExxhbnRpbW9p
381
bmUuaW5zYS1zdHJhc2JvdXJnLmZyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
382
CgKCAQEAtuM8lRjlVjjmrHq9VtguaOMQL+Wd99BiOs56kL3Mbctg1FwH69LYThCW
383
6dOz6WJg/jU/naF7jEikXKc71xGyu7Ph7Iqa9S5hoXXAT8u/0q2nZDeTOraJqKe1
384
FMF2RzXhEEMyQO3CiKNK9b+tbKoNZS7FQCixMZklWZPt4EcEKd6jyRq1WYX3dpnb
385
r9I/aCdhtK/PGvGe5gKTDoTR2HKyWKJTc/obf8x/vlYIEwiaGgdlqI2KiBE0x48n
386
zQdP6XVi3T8ZWbnkLmCfgJtP2C8PtEJuwDRAy0Z9N4DSwvxn5YCVYgBLSi0TLa10
387
B/lUqqBezZrTrA9p9Lt8JtGXW5YGHwIDAQABo38wfTBcBgNVHREEVTBTghxhbnRp
388
bW9pbmUuaW5zYS1zdHJhc2JvdXJnLmZyhjNodHRwczovL2FudGltb2luZS5pbnNh
389
LXN0cmFzYm91cmcuZnIvaWRwL3NoaWJib2xldGgwHQYDVR0OBBYEFLFkjPZUc9JY
390
qrWjldJ/iGGkKAt4MA0GCSqGSIb3DQEBBQUAA4IBAQBSk/wU1mRn4VF2ifmy261K
391
DK7uX+t1H1hh8S38fKSFU7HoNXJTV3vQnmBOpYIGC1gtvmb+qjqpNtikU2zO84Gq
392
Q0bXHxYF2d9RUP89mKaFxE5uNcXFmlOA3ChZY3pMT5zwAPI/T60tGrex7zci7OLn
393
JDAQj/q4Yk9ejx6JTFggQSCCVh+oV/SDIMd2p5AY6H3mto3b6XCk7Lssa8a/D30k
394
pEkZnhTKdN82eRyynuOR7UDU4tasV4d7Mi/j53f5ihnRcsvwh/pYodjoVYY8cEcZ
395
JLnAXYF8coSwh8UN4D/0NHsvTuSOFQc85hGrqacMsvxiQiw9mv01AX5+A5YLEbVQ
396
					    </ds:X509Certificate>
397
					  </ds:X509Data>
398
					</ds:KeyInfo>
399
				</md:KeyDescriptor>
400

  
401

  
402

  
403
			   <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://antimoine.insa-strasbourg.fr/idp/profile/SAML2/Redirect/SLO"/>
404

  
405
			   <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://antimoine.insa-strasbourg.fr/idp/profile/SAML2/POST/SLO"/>
406

  
407
			   <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://antimoine.insa-strasbourg.fr/idp/profile/SAML2/SOAP/SLO"/>
408

  
409

  
410
			<md:NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</md:NameIDFormat>
411
			<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
412

  
413

  
414
			<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://antimoine.insa-strasbourg.fr/idp/profile/SAML2/POST/SSO"/>
415

  
416
	        <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://antimoine.insa-strasbourg.fr/idp/profile/SAML2/Redirect/SSO"/>
417

  
418

  
419
			<md:SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest" Location="https://antimoine.insa-strasbourg.fr/idp/profile/Shibboleth/SSO"/>
420

  
421

  
422
		</md:IDPSSODescriptor>
423

  
424

  
425

  
426
		<md:Organization>
427

  
428
			<md:OrganizationName xml:lang="en">INSA Strasbourg</md:OrganizationName>
429
			<md:OrganizationDisplayName xml:lang="en">INSA Strasbourg</md:OrganizationDisplayName>
430
			<md:OrganizationURL xml:lang="en">http://www.insa-strasbourg.fr</md:OrganizationURL>
431

  
432
		</md:Organization>
433

  
434

  
435

  
436
			    <md:ContactPerson contactType="technical">
437
				 <md:SurName>Lahsen BOUZID</md:SurName>
438
				 <md:EmailAddress>lahsen.bouzid@insa-strasbourg.fr</md:EmailAddress>
439
		        </md:ContactPerson>
440

  
441

  
442

  
443
			    <md:ContactPerson contactType="technical">
444
				 <md:SurName>Simon SCHERRER</md:SurName>
445
				 <md:EmailAddress>simon.scherrer@insa-strasbourg.fr</md:EmailAddress>
446
		        </md:ContactPerson>
447

  
448

  
449

  
450

  
451
	</md:EntityDescriptor></md:EntitiesDescriptor>
tests/test_utils.py
1
import os
1 2
import re
2 3
import datetime
3 4

  
......
39 40
    assert 'failed with error' in caplog.text
40 41

  
41 42

  
43
def test_load_federation(mocker, rf, private_settings, caplog, tmpdir):
44
    private_settings.MELLON_FEDERATIONS = [
45
            'tests/federation-sample.xml'
46
    ]
47
    request = rf.get('/')
48
    assert 'failed with error' not in caplog.text
49
    with HTTMock(error_500):
50
        server = create_server(request)
51
    assert len(server.providers) == 4
52

  
53

  
42 54
def test_create_server_invalid_metadata(mocker, rf, private_settings, caplog):
43 55
    private_settings.MELLON_IDENTITY_PROVIDERS = [
44 56
        {
45
-