Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(jans-config-api): changes ignore client.customObjectClasses value for pe… #1073

Merged
merged 1 commit into from
Mar 18, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions jans-config-api/profiles/local/test.properties
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ test.scopes=https://jans.io/oauth/config/acrs.readonly https://jans.io/oauth/con
#test.issuer=https://jans.server4


# jans.server1
# jans.server
token.endpoint=https://jans.server/jans-auth/restv1/token
token.grant.type=client_credentials
test.client.id=1800.1832c189-59e0-4077-b3d9-3d03e90c8194
test.client.secret=9WWPhtHBGktg
test.client.id=1800.77e9a8e6-8fee-4b86-b294-017ba6ab2112
test.client.secret=dobHjXDhH6zh
test.issuer=https://jans.server
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@
import io.jans.configapi.core.rest.ProtectedApi;
import io.jans.configapi.rest.model.SearchRequest;
import io.jans.configapi.service.auth.ClientService;
import io.jans.configapi.service.auth.ConfigurationService;
import io.jans.configapi.util.ApiAccessConstants;
import io.jans.configapi.util.ApiConstants;
import io.jans.configapi.util.AttributeNames;
import io.jans.configapi.core.util.Jackson;
import io.jans.orm.PersistenceEntryManager;
import io.jans.orm.model.PagedResult;
import io.jans.util.StringHelper;
import io.jans.util.security.StringEncrypter.EncryptionException;
Expand Down Expand Up @@ -55,6 +57,9 @@ public class ClientsResource extends BaseResource {
@Inject
ClientService clientService;

@Inject
ConfigurationService configurationService;

@Inject
private InumService inumService;

Expand All @@ -79,7 +84,7 @@ public Response getOpenIdConnectClients(
startIndex, limit, null, null);

final List<Client> clients = this.doSearch(searchReq);
log.trace("Client serach result:{}", clients);
logger.trace("Client serach result:{}", clients);
return Response.ok(getClients(clients)).build();
}

Expand Down Expand Up @@ -116,6 +121,9 @@ public Response createOpenIdConnect(@Valid Client client) throws EncryptionExcep
client.setClientSecret(encryptionService.encrypt(clientSecret));
client.setDn(clientService.getDnForClient(inum));
client.setDeletable(client.getClientSecretExpiresAt() != null);
ignoreCustomObjectClassesForNonLDAP(client);

logger.debug("Final Client details to be added - client:{}", client);
clientService.addClient(client);
Client result = clientService.getClientByInum(inum);
result.setClientSecret(encryptionService.decrypt(result.getClientSecret()));
Expand All @@ -140,6 +148,9 @@ public Response updateClient(@Valid Client client) throws EncryptionException {
if (client.getClientSecret() != null) {
client.setClientSecret(encryptionService.encrypt(client.getClientSecret()));
}
ignoreCustomObjectClassesForNonLDAP(client);

logger.debug("Final Client details to be updated - client:{}", client);
clientService.updateClient(client);
Client result = clientService.getClientByInum(existingClient.getClientId());
result.setClientSecret(encryptionService.decrypt(client.getClientSecret()));
Expand Down Expand Up @@ -198,17 +209,30 @@ private List<Client> doSearch(SearchRequest searchReq) {

PagedResult<Client> pagedResult = clientService.searchClients(searchReq);
if (logger.isTraceEnabled()) {
log.trace("PagedResult - pagedResult:{}", pagedResult);
logger.trace("PagedResult - pagedResult:{}", pagedResult);
}

List<Client> clients = new ArrayList<>();
if (pagedResult != null) {
log.trace("Clients fetched - pagedResult.getEntries():{}", pagedResult.getEntries());
logger.trace("Clients fetched - pagedResult.getEntries():{}", pagedResult.getEntries());
clients = pagedResult.getEntries();
}
if (logger.isDebugEnabled()) {
logger.debug("Clients fetched - clients:{}", clients);
}
return clients;
}

private Client ignoreCustomObjectClassesForNonLDAP(Client client) {
String persistenceType = configurationService.getPersistenceType();
logger.debug("persistenceType: {}",persistenceType);
if(!PersistenceEntryManager.PERSITENCE_TYPES.ldap.name().equals(persistenceType)) {
logger.debug("Setting CustomObjectClasses :{} to null as its used only for LDAP and current persistenceType is {} ", client.getCustomObjectClasses() , persistenceType);
client.setCustomObjectClasses(null);
}
return client;
}



}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"applicationType": "web",
"description":"Description for test client",
"customObjectClasses":["top"],
"accessTokenAsJwt": false,
"claimRedirectUris": [
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,25 +81,29 @@ And header Authorization = 'Bearer ' + accessToken
And request read('client.json')
When method POST
Then status 201
And print response
Then def result = response
Then set result.displayName = 'UpdatedQAAddedClient'
Given url mainUrl
And header Authorization = 'Bearer ' + accessToken
And request result
When method PUT
Then status 200
And print response
And assert response.displayName == 'UpdatedQAAddedClient'
Given url mainUrl + '/' +response.inum
And header Authorization = 'Bearer ' + accessToken
When method DELETE
Then status 204
And print response


Scenario: Delete a non-existion openid connect client by inum
Given url mainUrl + '/1402.66633-8675-473e-a749'
And header Authorization = 'Bearer ' + accessToken
When method GET
Then status 404
And print response


Scenario: Patch openid connect client
Expand Down