Skip to content

Commit 1b18d9f

Browse files
committed
Adding API for generating SAML SP metadata
Resolves elastic#49018
1 parent 1180e64 commit 1b18d9f

File tree

8 files changed

+138
-186
lines changed

8 files changed

+138
-186
lines changed

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/action/saml/SamlSpMetadataAction.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import org.elasticsearch.action.ActionType;
1010

1111
public class SamlSpMetadataAction extends ActionType<SamlSpMetadataResponse> {
12-
public static final String NAME = "cluster:admin/xpack/security/saml/metadata";
12+
public static final String NAME = "cluster:monitor/xpack/security/saml/metadata";
1313
public static final SamlSpMetadataAction INSTANCE = new SamlSpMetadataAction();
1414

1515
private SamlSpMetadataAction() {

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/action/saml/SamlSpMetadataRequest.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@
1818

1919
public class SamlSpMetadataRequest extends ActionRequest {
2020

21-
String realmName;
21+
private String realmName;
2222

2323
public SamlSpMetadataRequest(StreamInput in) throws IOException {
2424
super(in);
2525
realmName = in.readOptionalString();
2626
}
2727

28-
public SamlSpMetadataRequest() {
28+
public SamlSpMetadataRequest(String realmName) {
29+
this.realmName = realmName;
2930
}
3031

3132
@Override

x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/security/action/saml/SamlSpMetadataRequestTests.java

+4-6
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,14 @@
1717

1818
public class SamlSpMetadataRequestTests extends ESTestCase {
1919

20-
public void testValidateFailsWhenRealmNotSet() {
21-
final SamlSpMetadataRequest samlSPMetadataRequest = new SamlSpMetadataRequest();
20+
public void testValidateFailsWhenRealmEmpty() {
21+
final SamlSpMetadataRequest samlSPMetadataRequest = new SamlSpMetadataRequest("");
2222
final ActionRequestValidationException validationException = samlSPMetadataRequest.validate();
2323
assertThat(validationException.getMessage(), containsString("Realm name may not be empty"));
2424
}
2525

2626
public void testValidateSerialization() throws IOException {
27-
final SamlSpMetadataRequest samlSPMetadataRequest = new SamlSpMetadataRequest();
28-
samlSPMetadataRequest.setRealmName("saml1");
27+
final SamlSpMetadataRequest samlSPMetadataRequest = new SamlSpMetadataRequest("saml1");
2928
try (BytesStreamOutput out = new BytesStreamOutput()) {
3029
samlSPMetadataRequest.writeTo(out);
3130
try (StreamInput in = out.bytes().streamInput()) {
@@ -36,8 +35,7 @@ public void testValidateSerialization() throws IOException {
3635
}
3736

3837
public void testValidateToString() {
39-
final SamlSpMetadataRequest samlSPMetadataRequest = new SamlSpMetadataRequest();
40-
samlSPMetadataRequest.setRealmName("saml1");
38+
final SamlSpMetadataRequest samlSPMetadataRequest = new SamlSpMetadataRequest("saml1");
4139
assertThat(samlSPMetadataRequest.toString(), containsString("{realmName=saml1}"));
4240
}
4341
}

x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/action/saml/TransportSamlSpMetadataAction.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
import org.elasticsearch.xpack.core.security.action.saml.SamlSpMetadataRequest;
1818
import org.elasticsearch.xpack.core.security.action.saml.SamlSpMetadataResponse;
1919
import org.elasticsearch.xpack.security.authc.Realms;
20-
import org.elasticsearch.xpack.security.authc.saml.SamlEntityDescriptorBuilder;
2120
import org.elasticsearch.xpack.security.authc.saml.SamlRealm;
21+
import org.elasticsearch.xpack.security.authc.saml.SamlSpMetadataBuilder;
2222
import org.elasticsearch.xpack.security.authc.saml.SamlUtils;
2323
import org.opensaml.saml.saml2.metadata.EntityDescriptor;
2424
import org.opensaml.saml.saml2.metadata.impl.EntityDescriptorMarshaller;
@@ -63,8 +63,8 @@ protected void doExecute(Task task, SamlSpMetadataRequest request,
6363
private void prepareMetadata(SamlRealm realm, ActionListener<SamlSpMetadataResponse> listener) {
6464
try {
6565
final EntityDescriptorMarshaller marshaller = new EntityDescriptorMarshaller();
66-
final SamlEntityDescriptorBuilder samlEntityDescriptorBuilder = new SamlEntityDescriptorBuilder(realm);
67-
final EntityDescriptor descriptor = samlEntityDescriptorBuilder.getEntityDescriptor();
66+
final SamlSpMetadataBuilder builder = new SamlSpMetadataBuilder(realm);
67+
final EntityDescriptor descriptor = builder.build();
6868
final Element element = marshaller.marshall(descriptor);
6969
final StringWriter writer = new StringWriter();
7070
final Transformer serializer = SamlUtils.getHardenedXMLTransformer();

x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/saml/SamlEntityDescriptorBuilder.java

-123
This file was deleted.

0 commit comments

Comments
 (0)