Skip to content

Commit b557d20

Browse files
authored
Update OIDC test fixture (#89526)
This commit updates the OIDC test fixture to use the latest demo docker image from https://connect2id.com. As part of this change some of the docker image demo login has changed from prior versions and the test code is updated accordingly. fixes #89477 reverts #89478 / e949dff.
1 parent 0cf3dc9 commit b557d20

File tree

4 files changed

+25
-56
lines changed

4 files changed

+25
-56
lines changed

x-pack/qa/oidc-op-tests/build.gradle

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,4 @@ tasks.named("processJavaRestTestResources").configure {
2121
tasks.named("javaRestTest").configure {
2222
// OpenID Connect fixture does not support aarm64
2323
onlyIf { Architecture.current() == Architecture.X64 }
24-
25-
// AwaitsFix: https://github.com/elastic/elasticsearch/issues/89477
26-
enabled = false
2724
}

x-pack/qa/oidc-op-tests/src/javaRestTest/java/org/elasticsearch/xpack/security/authc/oidc/C2IdOpTestCase.java

Lines changed: 13 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -136,59 +136,30 @@ protected String authenticateAtOP(URI opAuthUri) throws Exception {
136136
assertThat(initResponse.getAsString("type"), equalTo("auth"));
137137
final String sid = initResponse.getAsString("sid");
138138
// Actually authenticate the user with ldapAuth
139-
HttpPost loginHttpPost = new HttpPost(C2ID_LOGIN_API + "authenticateSubject?cacheBuster=" + randomAlphaOfLength(8));
139+
HttpPost loginHttpPost = new HttpPost(
140+
C2ID_LOGIN_API + "authenticateSubject?cacheBuster=" + randomAlphaOfLength(8) + "&authSessionId=" + sid
141+
);
140142
String loginJson = """
141143
{"username":"alice","password":"secret"}""";
142144
configureJsonRequest(loginHttpPost, loginJson);
143-
JSONObject loginJsonResponse = execute(httpClient, loginHttpPost, context, response -> {
145+
execute(httpClient, loginHttpPost, context, response -> {
144146
assertHttpOk(response.getStatusLine());
145147
return parseJsonResponse(response);
146148
});
147-
// Get the consent screen
148-
HttpPut consentFetchHttpPut = new HttpPut(
149+
150+
HttpPut consentHttpPut = new HttpPut(
149151
C2ID_LOGIN_API + "updateAuthRequest" + "/" + sid + "?cacheBuster=" + randomAlphaOfLength(8)
150152
);
151-
String consentFetchJson = """
152-
{
153-
"sub": "%s",
154-
"acr": "http://loa.c2id.com/basic",
155-
"amr": [ "pwd" ],
156-
"data": {
157-
"email": "%s",
158-
"name": "%s"
159-
}
160-
}""".formatted(
161-
loginJsonResponse.getAsString("id"),
162-
loginJsonResponse.getAsString("email"),
163-
loginJsonResponse.getAsString("name")
164-
);
165-
configureJsonRequest(consentFetchHttpPut, consentFetchJson);
166-
JSONObject consentFetchResponse = execute(httpClient, consentFetchHttpPut, context, response -> {
153+
String consentJson = """
154+
{"claims":["name", "email"],"scope":["openid"]}""";
155+
configureJsonRequest(consentHttpPut, consentJson);
156+
JSONObject jsonConsentResponse = execute(httpClient, consentHttpPut, context, response -> {
167157
assertHttpOk(response.getStatusLine());
168158
return parseJsonResponse(response);
169159
});
170-
if (consentFetchResponse.getAsString("type").equals("consent")) {
171-
// If needed, submit the consent
172-
HttpPut consentHttpPut = new HttpPut(
173-
C2ID_LOGIN_API + "updateAuthRequest" + "/" + sid + "?cacheBuster=" + randomAlphaOfLength(8)
174-
);
175-
String consentJson = """
176-
{"claims":["name", "email"],"scope":["openid"]}""";
177-
configureJsonRequest(consentHttpPut, consentJson);
178-
JSONObject jsonConsentResponse = execute(httpClient, consentHttpPut, context, response -> {
179-
assertHttpOk(response.getStatusLine());
180-
return parseJsonResponse(response);
181-
});
182-
assertThat(jsonConsentResponse.getAsString("type"), equalTo("response"));
183-
JSONObject parameters = (JSONObject) jsonConsentResponse.get("parameters");
184-
return parameters.getAsString("uri");
185-
} else if (consentFetchResponse.getAsString("type").equals("response")) {
186-
JSONObject parameters = (JSONObject) consentFetchResponse.get("parameters");
187-
return parameters.getAsString("uri");
188-
} else {
189-
fail("Received an invalid response from the OP");
190-
return null;
191-
}
160+
assertThat(jsonConsentResponse.getAsString("type"), equalTo("response"));
161+
JSONObject parameters = (JSONObject) jsonConsentResponse.get("parameters");
162+
return parameters.getAsString("uri");
192163
}
193164
}
194165

x-pack/test/idp-fixture/docker-compose.yml

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -161,17 +161,16 @@ services:
161161
- ./idp/shibboleth-idp/metadata:/opt/shibboleth-idp/metadata
162162
- ./idp/shib-jetty-base/start.d/ssl.ini:/opt/shib-jetty-base/start.d/ssl.ini
163163

164-
# c2id/c2id-server image is no longer available
165-
# oidc-provider:
166-
# image: "c2id/c2id-server:9.5"
167-
# depends_on:
168-
# - http-proxy
169-
# ports:
170-
# - "8080"
171-
# expose:
172-
# - "8080"
173-
# volumes:
174-
# - ./oidc/override.properties:/etc/c2id/override.properties
164+
oidc-provider:
165+
image: "c2id/c2id-server-demo:12.16.1"
166+
depends_on:
167+
- http-proxy
168+
ports:
169+
- "8080"
170+
expose:
171+
- "8080"
172+
volumes:
173+
- ./oidc/override.properties:/etc/c2id/override.properties
175174

176175
http-proxy:
177176
image: "nginx:latest"

x-pack/test/idp-fixture/oidc/override.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ op.issuer=http://oidc-provider:8080/c2id
22
op.authz.endpoint=http://oidc-provider:8080/c2id-login/
33
op.reg.apiAccessTokenSHA256=d1c4fa70d9ee708d13cfa01daa0e060a05a2075a53c5cc1ad79e460e96ab5363
44
jose.jwkSer=RnVsbCBrZXk6CnsKICAia2V5cyI6IFsKICAgIHsKICAgICAgInAiOiAiLXhhN2d2aW5tY3N3QXU3Vm1mV2loZ2o3U3gzUzhmd2dFSTdMZEVveW5FU1RzcElaeUY5aHc0NVhQZmI5VHlpbzZsOHZTS0F5RmU4T2lOalpkNE1Ra0ttYlJzTmxxR1Y5VlBoWF84UG1JSm5mcGVhb3E5YnZfU0k1blZHUl9zYUUzZE9sTEE2VWpaS0lsRVBNb0ZuRlZCMUFaUU9qQlhRRzZPTDg2eDZ2NHMwIiwKICAgICAgImt0eSI6ICJSU0EiLAogICAgICAicSI6ICJ2Q3pDQUlpdHV0MGx1V0djQloyLUFabURLc1RxNkkxcUp0RmlEYkIyZFBNQVlBNldOWTdaWEZoVWxsSjJrT2ZELWdlYjlkYkN2ODBxNEwyajVZSjZoOTBUc1NRWWVHRlljN1lZMGdCMU5VR3l5cXctb29QN0EtYlJmMGI3b3I4ajZJb0hzQTZKa2JranN6c3otbkJ2U2RmUURlZkRNSVc3Ni1ZWjN0c2hsY2MiLAogICAgICAiZCI6ICJtbFBOcm1zVVM5UmJtX1I5SElyeHdmeFYzZnJ2QzlaQktFZzRzc1ZZaThfY09lSjV2U1hyQV9laEtwa2g4QVhYaUdWUGpQbVlyd29xQzFVUksxUkZmLVg0dG10emV2OUVHaU12Z0JCaEF5RkdTSUd0VUNla2x4Q2dhb3BpMXdZSU1Bd0M0STZwMUtaZURxTVNCWVZGeHA5ZWlJZ2pwb05JbV9lR3hXUUs5VHNnYmk5T3lyc1VqaE9KLVczN2JVMEJWUU56UXpxODhCcGxmNzM3VmV1dy1FeDZaMk1iWXR3SWdfZ0JVb0JEZ0NrZkhoOVE4MElYcEZRV0x1RzgwenFrdkVwTHZ0RWxLbDRvQ3BHVnBjcmFUOFNsOGpYc3FDT1k0dnVRT19LRVUzS2VPNUNJbHd4eEhJYXZjQTE5cHFpSWJ5cm1LbThxS0ZEWHluUFJMSGFNZ1EiLAogICAgICAiZSI6ICJBUUFCIiwKICAgICAgImtpZCI6ICJyc2EzODRfMjA0OCIsCiAgICAgICJxaSI6ICJzMldTamVrVDl3S2JPbk9neGNoaDJPY3VubzE2Y20wS281Z3hoUWJTdVMyMldfUjJBR2ZVdkRieGF0cTRLakQ3THo3X1k2TjdTUkwzUVpudVhoZ1djeXgyNGhrUGppQUZLNmlkYVZKQzJqQmgycEZTUDVTNXZxZ0lsME12eWY4NjlwdkN4S0NzaGRKMGdlRWhveE93VkRPYXJqdTl2Zm9IQV90LWJoRlZrUnciLAogICAgICAiZHAiOiAiQlJhQTFqYVRydG9mTHZBSUJBYW1OSEVhSm51RU9zTVJJMFRCZXFuR1BNUm0tY2RjSG1OUVo5WUtqb2JpdXlmbnhGZ0piVDlSeElBRG0ySkpoZEp5RTN4Y1dTSzhmSjBSM1Jick1aT1dwako0QmJTVzFtU1VtRnlKTGxib3puRFhZR2RaZ1hzS0o1UkFrRUNQZFBCY3YwZVlkbk9NYWhfZndfaFZoNjRuZ2tFIiwKICAgICAgImFsZyI6ICJSU0EzODQiLAogICAgICAiZHEiOiAiUFJoVERKVlR3cDNXaDZfWFZrTjIwMUlpTWhxcElrUDN1UTYyUlRlTDNrQ2ZXSkNqMkZPLTRxcVRIQk0tQjZJWUVPLXpoVWZyQnhiMzJ1djNjS2JDWGFZN3BJSFJxQlFEQWQ2WGhHYzlwc0xqNThXd3VGY2RncERJYUFpRjNyc3NUMjJ4UFVvYkJFTVdBalV3bFJrNEtNTjItMnpLQk5FR3lIcDIzOUpKdnpVIiwKICAgICAgIm4iOiAidUpDWDVDbEZpM0JnTXBvOWhRSVZ2SDh0Vi1jLTVFdG5OeUZxVm91R3NlNWwyUG92MWJGb0tsRllsU25YTzNWUE9KRWR3azNDdl9VT0UtQzlqZERYRHpvS3Z4RURaTVM1TDZWMFpIVEJoNndIOV9iN3JHSlBxLV9RdlNkejczSzZxbHpGaUtQamRvdTF6VlFYTmZfblBZbnRnQkdNRUtBc1pRNGp0cWJCdE5lV0h0MF9UM001cEktTV9KNGVlRWpCTW95TkZuU2ExTEZDVmZRNl9YVnpjelp1TlRGMlh6UmdRWkFmcmJGRXZ6eXR1TzVMZTNTTXFrUUFJeDhFQmkwYXVlRUNqNEQ4cDNVNXFVRG92NEF2VnRJbUZlbFJvb1pBMHJtVW1KRHJ4WExrVkhuVUpzaUF6ZW9TLTNBSnV1bHJkMGpuNjJ5VjZHV2dFWklZMVNlZVd3IgogICAgfQogIF0KfQo
5+
op.authz.alwaysPromptForConsent=true
6+
op.authz.alwaysPromptForAuth=true

0 commit comments

Comments
 (0)