[7.x] Refactor SamlAuthenticatorTests (#51089) (#57105)

- Use opensaml to sign and encrypt responses/assertions/attributes
instead of doing this manually
- Use opensaml to build response and assertion objects instead of
parsing xml strings
- Always use different keys for signing and encryption. Due to FIPS
140 requirements, BouncyCastle FIPS provider will block
RSA keys that have been used for signing from being used for
encryption and vice versa. This change adds new encryption specific
 keys to be used throughout the tests.
This commit is contained in:
Ioannis Kakavas 2020-05-25 14:09:42 +03:00 committed by GitHub
parent 6c832fe4e3
commit 174af2bb1a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 736 additions and 1539 deletions

View File

@ -230,7 +230,7 @@ class SamlAuthenticator extends SamlRequestHandler {
private List<Attribute> processAssertion(Assertion assertion, boolean requireSignature, Collection<String> allowedSamlRequestIds) {
if (logger.isTraceEnabled()) {
logger.trace("(Possibly decrypted) Assertion: {}", SamlUtils.getXmlContent(assertion));
logger.trace("(Possibly decrypted) Assertion: {}", SamlUtils.getXmlContent(assertion, true));
logger.trace(SamlUtils.describeSamlObject(assertion));
}
// Do not further process unsigned Assertions
@ -253,7 +253,7 @@ class SamlAuthenticator extends SamlRequestHandler {
for (EncryptedAttribute enc : statement.getEncryptedAttributes()) {
final Attribute attribute = decrypt(enc);
if (attribute != null) {
logger.trace("Successfully decrypted attribute: {}" + SamlUtils.getXmlContent(attribute));
logger.trace("Successfully decrypted attribute: {}" + SamlUtils.getXmlContent(attribute, true));
attributes.add(attribute);
}
}

View File

@ -656,7 +656,7 @@ public final class SamlRealm extends Realm implements Releasable {
.forceAuthn(forceAuthn)
.build();
if (logger.isTraceEnabled()) {
logger.trace("Constructed SAML Authentication Request: {}", SamlUtils.getXmlContent(authnRequest));
logger.trace("Constructed SAML Authentication Request: {}", SamlUtils.getXmlContent(authnRequest, true));
}
return authnRequest;
}
@ -672,7 +672,7 @@ public final class SamlRealm extends Realm implements Releasable {
final LogoutRequest logoutRequest = new SamlLogoutRequestMessageBuilder(
Clock.systemUTC(), serviceProvider, idpDescriptor.get(), nameId, session).build();
if (logoutRequest != null && logger.isTraceEnabled()) {
logger.trace("Constructed SAML Logout Request: {}", SamlUtils.getXmlContent(logoutRequest));
logger.trace("Constructed SAML Logout Request: {}", SamlUtils.getXmlContent(logoutRequest, true));
}
return logoutRequest;
} else {
@ -688,7 +688,7 @@ public final class SamlRealm extends Realm implements Releasable {
final LogoutResponse logoutResponse = new SamlLogoutResponseBuilder(
Clock.systemUTC(), serviceProvider, idpDescriptor.get(), inResponseTo, StatusCode.SUCCESS).build();
if (logoutResponse != null && logger.isTraceEnabled()) {
logger.trace("Constructed SAML Logout Response: {}", SamlUtils.getXmlContent(logoutResponse));
logger.trace("Constructed SAML Logout Response: {}", SamlUtils.getXmlContent(logoutResponse, true));
}
return logoutResponse;
}

View File

@ -162,9 +162,9 @@ public class SamlUtils {
serializer.transform(new DOMSource(element), new StreamResult(writer));
}
static String getXmlContent(SAMLObject object) {
static String getXmlContent(SAMLObject object, boolean pretty) {
try {
return toString(XMLObjectSupport.marshall(object), false);
return toString(XMLObjectSupport.marshall(object), pretty);
} catch (MarshallingException e) {
LOGGER.info("Error marshalling SAMLObject ", e);
return SAML_MARSHALLING_ERROR_STRING;
@ -202,7 +202,7 @@ public class SamlUtils {
sb.append("]");
return sb.toString();
}
return getXmlContent(object);
return getXmlContent(object, true);
}
@SuppressForbidden(reason = "This is the only allowed way to construct a Transformer")

View File

@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDCTCCAfGgAwIBAgIUB3S6ko3U+3KsXdT+WicypP3fQR8wDQYJKoZIhvcNAQEL
BQAwFDESMBAGA1UEAwwJc2FtbC10ZXN0MB4XDTIwMDExNjA4NTEwN1oXDTIwMDIx
NTA4NTEwN1owFDESMBAGA1UEAwwJc2FtbC10ZXN0MIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEAz2Im0c7DM/GiG9TBg9DtvYnFGbaAfpek3ZL87dN4LTRw
Y8+IVRX4viSXs+csoQlrfSlenM6oFsX5pd5afb8WQS7lOgKs23LKMWNxrsqxD6z+
T0nBwuVp1JG4vssAQpmR0L4MIngkY9lwaypEEh3CU88WAPY2tZS0VVL+gsybvRYf
M8xME4reQLwLwrXAADqwmGAoXR9M+Wlnn9exCHLwEOuLSpF22gsHf2O1zOP8LP7c
GIkSFLHyBuAzlyqdHB/6nCl9jKAlFsdaZYmWZlisv8kG7qyDFoAlMN5vz8s/DMfC
ST24r5KCMePbeMuJ/Wp0mDonnbtSGhdVGwWBvSJY7QIDAQABo1MwUTAdBgNVHQ4E
FgQUeCFciRBJxggeR+AKM7UUJYTQPMkwHwYDVR0jBBgwFoAUeCFciRBJxggeR+AK
M7UUJYTQPMkwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAjxao
xyYhPWeHK/JXbL5itXQM5Ffghb7jt6A+yndorDtg0IpwXJPe/G9Np1XvqpEkKFAp
VaO+2D/YCfJsqGBXEdo0gdiC5oL9sSr/2VgFYVJZWqTxgn29xW5B16Q2SbwJGOJP
RvtID4WyxN9KSmkmJ/+KHz1bVzIBIE1SX8cVzifhLrgLvkMBv0djtWdI71At7cW3
Ri0+E63v1OSJc/6eIqCuTkh4Te0MozV5btH3B1Uw5159Lb5czmQTwkDT0kCKLlv2
4RqCggJ5JVafE+MzktcPE0BgEwpPyoDazCv44At5O4JN7YYtsz/VTxYElBjZqmRq
SsL51RM0uOxCIda+4g==
-----END CERTIFICATE-----

View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDPYibRzsMz8aIb
1MGD0O29icUZtoB+l6Tdkvzt03gtNHBjz4hVFfi+JJez5yyhCWt9KV6czqgWxfml
3lp9vxZBLuU6AqzbcsoxY3GuyrEPrP5PScHC5WnUkbi+ywBCmZHQvgwieCRj2XBr
KkQSHcJTzxYA9ja1lLRVUv6CzJu9Fh8zzEwTit5AvAvCtcAAOrCYYChdH0z5aWef
17EIcvAQ64tKkXbaCwd/Y7XM4/ws/twYiRIUsfIG4DOXKp0cH/qcKX2MoCUWx1pl
iZZmWKy/yQburIMWgCUw3m/Pyz8Mx8JJPbivkoIx49t4y4n9anSYOiedu1IaF1Ub
BYG9IljtAgMBAAECggEAUmTWs4kIeTzJgXE4KVz699Ei5CJkTueE8xuRLhRUrPEm
riEoM1X1a+Yx96IjUx/g+utS0c4xbkrd8w6yuT8QYnl1TWT+tHmY56Jw6ldRnb7H
k0zklMB9GZ2D3xncUpmdG2hGffNp0dn0Fj/Gp8P3D0E5pswr1FzugO/meqU8QxUt
aEdfieRdAnycN8i5rpGE4jMGXgOl3+yecFabP7LTYWlEdBM/FbAKSIGW4po9Fpyz
b0Q8C11waH+BnA294PRI8t/HWQBbKB/wMR8ONkYR9ua26fH6kpN7UixUOlrrUgcj
Ek4proFDSg+emm1CV82GPaklwDOW5Fde1FigKXUvqQKBgQD3SZOROyvOw96bXdCu
xVxOcZ+DwOFqRiWj3xSKtPABeEh2M6j93BA8GmVsZMcKhNJwuloTwzPaLcVIA58e
VmzFcoo8dgmMk/aWW9Tg6Y2m3gqjdw996KAqPHezgYpfC8H6T+PDh5/W7CZYlpBI
nwAw6InuJ43ZIMRoRys/ayd/dwKBgQDWsKieC5iMQ6/kK1mURmE15DY+yDqfW1MK
KKeBvTjZR1JiacDv/KGo6zzcuWkuw0+yBPkkReBfuBI6VVDrCHTL5GEnjqgsZV5N
EBqcssRLspVzaGyfg1oXkY5VhHlpNQIxCr3UO5AY+2w3LbObxX4p2zrClQQ/OQL7
L0skgmrruwKBgEbHUmtxKjrGKUMC+SXs61ywfN2zKVHHviJHSZPh8ggZq3PZmXb/
s83gKEN8HNRP7APD8uBRMNgz3ZGdJ8ABMKTbAeIITvdjqmKi6i1t69NlHlpnS5HY
MW+lWwWQAFDwBpdkomZmvUNA2EDm52lByUY2aLQ3sgwBqvXF2QUP4IBFAoGAX4R9
oMN7/Xvn99YppsShX37He6tOGbRh/7USwbBUaKdIyixPAPcfXa47h+CeIYYYIRYB
WtgT+cJFqdpnhAphHI3hg93+iLIZAKRXkrwehadQwuYE3ftsy+ugrf+gnOROs08a
IiDV/advACW/MWDuvuShAg2WtCJDZ0olXnr/4x0CgYAsqUGPZ/DPvtuZ9R7z+m+v
9LHVwBq3SyoqzhJySudcGdxbzMkDFmrayOzu+hduZvGpHjmmSVR8CZlgfhvBVLBB
3ZhsvKffmxcQ06mRWkaoPjF1pAVsvv2B/mv3UOk4BMCVfubvwkAuALCpwtb/eNb6
9Oy43AY6nWvVTdzofHkqLQ==
-----END PRIVATE KEY-----

View File

@ -0,0 +1,29 @@
-----BEGIN CERTIFICATE-----
MIIFCTCCAvGgAwIBAgIUZ9tOytESIGPmYp5WGo5mCPQkROMwDQYJKoZIhvcNAQEL
BQAwFDESMBAGA1UEAwwJc2FtbC10ZXN0MB4XDTIwMDExNjA4NTA0OFoXDTIwMDIx
NTA4NTA0OFowFDESMBAGA1UEAwwJc2FtbC10ZXN0MIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEAuRK8buWfzd++mfGFT4ise2hHcIhdoVZx8LZiYLDc0kxU
vv7jLnZeldvkvMfPUWMGQQMATIDolk7DtuLt71/2IRdCOGT/sUU+6D4V9aP4kEfn
+eViiHn3lqVRpoN2zNWFsP0elSupIGoe3ec1v0rulc/An9N9aRAsjVaEwsw+ST45
VZB4AOVn4uyMYOyjwqYnrDAZXYxyV4S6NcqwKlRMSMGG4Triuo50iflpRpg/6RLb
csNN2EoyDS39wrcd5HGWHkUT1E1Y6c3ccifcAefEVrxDi6VOHEu5pKTnIKXYiAYN
+/jkxQSMazfuxIRnb7Ev18XqKsLepJAdp0RMPgD38Cc+MyCu6uEe9jEPeFLd1ATJ
oappnma8OO0pnJK9Uwq4bJCF6MF+QJPg8qefacl/bxwNFy6CpFwWGxukxx25Fvcf
L9lAOLPhV3tygpmsIiog9i5l8KlIfWbXhrKqupmcJa5N5yFikokilcnu1O96SQTt
yBg7yDNWysAD45URxGIDVqY6fCMr9E6vT550yhi8FCdC9KE/Z5b5328v9wu15LzZ
PU4yxl1C8DprHvHOytq778GMg4kdTrxsB0jg9WhXn1GYR8rBvrA9AjkKgBY0Gibi
w0RNUDrJZPHEkeWCps5m5K999np0tazPL5eaqILGEBZ2I35ma3tEWQtB0SW/g0MC
AwEAAaNTMFEwHQYDVR0OBBYEFFJ+Ap2vQQX7pEiP5W82jBuUQo+NMB8GA1UdIwQY
MBaAFFJ+Ap2vQQX7pEiP5W82jBuUQo+NMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
hvcNAQELBQADggIBAAgD8UcKAeKdxxXAcKvgyF+9P3RS/7Fs5CJDmLDTlPM0CMSD
5SvV9IKJRKhJb8B1mvBNNoylhR2qkl4VYflSDM+csU8kqgwDaOFnC2zNs+vQJCvW
1D7J5Jn+XrB8JsvEtXJu5/iRRc5f3SUWlqYra+ZwGsBM6MlCTGPpx0idhkiLH+Il
GCmA5BMnc1nSOHeUoNWf4KWB0K0nEeMCXuFbrxDZ+ryEz687ePypb2BT9lFxB/KF
rtTNl6CbMeq+dnprnvpZ+VHDRRgUJK/WQWS87utCpeRqbxBZe9tHXpcPdY0UHwKP
gT/cEi2vVs1AWJilzFTGv9LkfJsiBZzQ7LzEbUV2CyZwD0dYPXPYA2syfGqNF5hN
6dPJ3DlpV9aSWd5B9QzxqyvdcnR/EUX/JXDe7zq+7+5GjXoM+WA0duHkFJR0u80v
efUOf+e5FXBpf22dJL5al89TeS43ZzSIkD1pUxS72llq5mCGC9vzpHWXEe4b63d8
04u8NILQ8BrcTuRjpQ6iPXztbqdXKGciGYknyBDSnx4tV7bzR5/aOfJDZO4dlQn9
OasmT6O7Enku1ejwCsDHJ4+4Wl1IruPMBnZQ+BGPbebjAioBFOZFs8znwzhHyXQ/
pZpHkEA3zwyfE/3SSOBneg2qKnafwYqd0gR0H9lTilbAXgEpoDBdvh4xAPAu
-----END CERTIFICATE-----

View File

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
qmQ0yETAlrzaSjpGSmB7Fn6ojrmCn9U=
-----END PRIVATE KEY-----

View File

@ -0,0 +1,29 @@
-----BEGIN CERTIFICATE-----
MIIFCTCCAvGgAwIBAgIUWOpud/RrI/UfcmVRz/znbsdhGE4wDQYJKoZIhvcNAQEL
BQAwFDESMBAGA1UEAwwJc2FtbC10ZXN0MB4XDTIwMDExNjA4NTY1OFoXDTIwMDIx
NTA4NTY1OFowFDESMBAGA1UEAwwJc2FtbC10ZXN0MIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEAygY8hnc70Dn6YRcjNmMDW4GgVwuqooPKPm/gNbBFILS9
aYzAxNkXWS+ZbAv4eQFYN9CgUqp1TACG9E2s0hfEJfS7pbR06W5EkfReCYpPVE6W
uLVEgpNTzo35zfKoQ1dZ7ZXW93pqKmNAYvM4sOlyJy9VcYiGqkRvdWnlnHh3cTgn
GWwcDazirZu7+2Epyv03jxxxe+aO/4+DRW/mKDHpNlZMY3NgkALvoi3Wbj/5sJLg
e1GAer4mOicfdKY2EL+Ooamz/6P/wxf8QTQpJeuRUzGS0Fn/NMSHQV86qEBdlR6P
Igtmoz6K01S1TzYO9JP1pMWSt7N4ZwR11VeGdWJi4hO9AT+IwsQ+3MbRs8dR/iDY
uEfbX6wug7EL2CV2EK94bF66TyMU65lfSbkb67xCWTCrPaeWwG/oUqwED4EmPWo9
Yx3AGNJ1Q3bMkhH1mRuHZvPfi29NqJc6rrPWV7XtKaeKx+eZFnFPe4B/jRqbT2nB
PBwu8eplPO48IfIpqKScDQ1CSSb65IReaMbyq9VGHC/6yEvbZ5SJz7rRUitMM8QW
QrZQB0XjBOr3iqVSQpxKD3OqyN5vNOaBI7SfMJz6apT1tp73fdUgbsalajHbhKr7
D840ueWgIPq0MgACSeeP9AS/ytgsAhHPDFofRrgpOfk7z010GOqrLbRK1yQrKN0C
AwEAAaNTMFEwHQYDVR0OBBYEFKPD1ms1sreF9SuvEecmVGu10maAMB8GA1UdIwQY
MBaAFKPD1ms1sreF9SuvEecmVGu10maAMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
hvcNAQELBQADggIBAGi4XVFux26SrEK9TtcctY2IXu2IKf7uHotV3fqpVKfKMyAe
/nAwutjbVLIxG/Z3axKF8zpcuIp1aP+TT9Iw4Nnpe2ieogC+syGVSxGmnklVtaJ2
nuD5OKQObioAD28M/EPl6X2a2KbJPf7dpKK/8mJHx6vz6loFkHshZtUTD65/al1R
hABEI6/HGNI0RkjcMuyEROF+b19OOg7a1ERWuAjZ+G6WpGXlRjn7Ve7Jj6KwRJOI
jANN+27wCUdPlbpiFsZD8ZFGgH+hL5VTa3jvXKnwSZIbiQzCnBShdd1VEGjXeXLN
en1Lv/t6+E1glccGTckEuosTRu4myb9USojmbvLEM+0SCFa6wwak7Qz62bPPmKYr
xgvbyPh2I8drSZrrO4hrk+CeeWSylEc2PhX2jJPkNBK9ooURgmYDko5clsnLgQXm
cBrZVvZtrLuUIvpVqwxMZFqBalWoGWjYZ1lwg/qxH1c8sVvg+S05tThSmhtcMJZc
+wE5ZL7i8M9RkUmSfpd/7mWJvVz5N6pWk8b3LgcZO/lYYx3k2dih0/BWrBg9qgoy
obI7qSWZJMAVFlDcYEpPS6GO9wq27qFtg3rex0hJPtR2zgTi4+Qo7j7p1nqpf/Yr
BwVhhvM7RLn2NPQfPQV2HI9LoRO/nag+iC4rjNx76xoQZjj5xQ+QVyzOI1sr
-----END CERTIFICATE-----

View File

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
XYUhZdqN6Rr3NDMwUU4j8V4PZgR4JNOL
-----END PRIVATE KEY-----