Prevent updating IdP via organization API not linked with the organization
Closes #28833 Signed-off-by: vramik <vramik@redhat.com>
This commit is contained in:
parent
0d60e58029
commit
860f3b7320
2 changed files with 21 additions and 1 deletions
|
@ -134,7 +134,7 @@ public class OrganizationIdentityProviderResource {
|
|||
public Response update(IdentityProviderRepresentation rep) {
|
||||
IdentityProviderModel identityProvider = getIdentityProviderModel();
|
||||
|
||||
if (!rep.getAlias().equals(identityProvider.getAlias())) {
|
||||
if (!rep.getAlias().equals(identityProvider.getAlias()) || (rep.getInternalId() != null && !Objects.equals(rep.getInternalId(), identityProvider.getInternalId()))) {
|
||||
throw ErrorResponse.error("Identity provider not assigned to the organization.", Status.NOT_FOUND);
|
||||
}
|
||||
|
||||
|
|
|
@ -125,6 +125,26 @@ public class OrganizationIdentityProviderTest extends AbstractOrganizationTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void tryUpdateIdPWithValidAliasInvalidInternalId() {
|
||||
OrganizationRepresentation orgRep = createOrganization();
|
||||
OrganizationResource orgResource = testRealm().organizations().get(orgRep.getId());
|
||||
|
||||
OrganizationIdentityProviderResource orgIdPResource = orgResource.identityProvider();
|
||||
|
||||
IdentityProviderRepresentation idpRepresentation = createRep("some-broker", "oidc");
|
||||
//create IdP in realm not bound to Org and get created internalId
|
||||
testRealm().identityProviders().create(idpRepresentation).close();
|
||||
String internalId = testRealm().identityProviders().get("some-broker").toRepresentation().getInternalId();
|
||||
|
||||
IdentityProviderRepresentation orgIdPRep = orgIdPResource.toRepresentation();
|
||||
orgIdPRep.setInternalId(internalId);
|
||||
|
||||
try (Response response = orgIdPResource.update(orgIdPRep)) {
|
||||
assertThat(response.getStatus(), equalTo(Response.Status.NOT_FOUND.getStatusCode()));
|
||||
}
|
||||
}
|
||||
|
||||
private IdentityProviderRepresentation createRep(String alias, String providerId) {
|
||||
IdentityProviderRepresentation idp = new IdentityProviderRepresentation();
|
||||
|
||||
|
|
Loading…
Reference in a new issue