use of com.thoughtworks.go.config.SecurityAuthConfig in project gocd by gocd.
the class PluginAuthenticationProvider method getUserDetailsFromAuthorizationPlugins.
private User getUserDetailsFromAuthorizationPlugins(String username, UsernamePasswordAuthenticationToken authentication) {
String loginName = loginName(username, authentication);
String password = (String) authentication.getCredentials();
for (SecurityAuthConfig authConfig : configService.security().securityAuthConfigs()) {
String pluginId = authConfig.getPluginId();
if (!store.doesPluginSupportPasswordBasedAuthentication(pluginId)) {
continue;
}
final List<PluginRoleConfig> roleConfigs = configService.security().getRoles().pluginRoleConfigsFor(authConfig.getId());
try {
LOGGER.debug("[Authenticate] Authenticating user: `{}` using the authorization plugin: `{}`", loginName, pluginId);
AuthenticationResponse response = authorizationExtension.authenticateUser(pluginId, loginName, password, Collections.singletonList(authConfig), roleConfigs);
User user = ensureDisplayNamePresent(response.getUser());
if (user != null) {
pluginRoleService.updatePluginRoles(pluginId, user.getUsername(), CaseInsensitiveString.caseInsensitiveStrings(response.getRoles()));
LOGGER.debug("[Authenticate] Successfully authenticated user: `{}` using the authorization plugin: `{}`", loginName, pluginId);
return user;
}
} catch (Exception e) {
LOGGER.error("[Authenticate] Error while authenticating user: `{}` using the authorization plugin: {} ", loginName, pluginId);
}
LOGGER.debug("[Authenticate] Authentication failed for user: `{}` using the authorization plugin: `{}`", loginName, pluginId);
}
return null;
}
use of com.thoughtworks.go.config.SecurityAuthConfig in project gocd by gocd.
the class SecurityAuthConfigUpdateCommand method isRequestFresh.
private boolean isRequestFresh(CruiseConfig cruiseConfig) {
SecurityAuthConfig existingProfile = findExistingProfile(cruiseConfig);
boolean freshRequest = hashingService.hashForEntity(existingProfile).equals(digest);
if (!freshRequest) {
result.stale(getObjectDescriptor().staleConfig(existingProfile.getId()));
}
return freshRequest;
}
use of com.thoughtworks.go.config.SecurityAuthConfig in project gocd by gocd.
the class SecurityAuthConfigControllerV2 method show.
public String show(Request request, Response response) throws IOException {
final SecurityAuthConfig securityAuthConfig = fetchEntityFromConfig(request.params("id"));
String etag = etagFor(securityAuthConfig);
if (fresh(request, etag)) {
return notModified(response);
}
setEtagHeader(response, etag);
return writerForTopLevelObject(request, response, jsonWriter(securityAuthConfig));
}
use of com.thoughtworks.go.config.SecurityAuthConfig in project gocd by gocd.
the class SecurityAuthConfigControllerV2 method update.
public String update(Request request, Response response) {
final String securityAuthConfigId = request.params("id");
final SecurityAuthConfig existingAuthConfig = fetchEntityFromConfig(securityAuthConfigId);
final SecurityAuthConfig newAuthConfig = buildEntityFromRequestBody(request);
HttpLocalizedOperationResult result = new HttpLocalizedOperationResult();
if (isRenameAttempt(securityAuthConfigId, newAuthConfig.getId())) {
throw haltBecauseRenameOfEntityIsNotSupported(getEntityType().getEntityNameLowerCase());
}
if (isPutRequestStale(request, existingAuthConfig)) {
throw haltBecauseEtagDoesNotMatch(getEntityType().getEntityNameLowerCase(), existingAuthConfig.getId());
}
newAuthConfig.setId(securityAuthConfigId);
securityAuthConfigService.update(currentUsername(), etagFor(existingAuthConfig), newAuthConfig, result);
return handleCreateOrUpdateResponse(request, response, newAuthConfig, result);
}
use of com.thoughtworks.go.config.SecurityAuthConfig in project gocd by gocd.
the class AuthorizationExtensionTest method shouldTalkToPlugin_To_SearchUsers.
@Test
void shouldTalkToPlugin_To_SearchUsers() {
String requestBody = "{\n" + " \"search_term\": \"bob\",\n" + " \"auth_configs\": [\n" + " {\n" + " \"id\": \"ldap\",\n" + " \"configuration\": {\n" + " \"foo\": \"bar\"\n" + " }\n" + " }\n" + " ]\n" + "}";
String responseBody = "[{\"username\":\"bob\",\"display_name\":\"Bob\",\"email\":\"bob@example.com\"}]";
when(pluginManager.submitTo(eq(PLUGIN_ID), eq(AUTHORIZATION_EXTENSION), requestArgumentCaptor.capture())).thenReturn(new DefaultGoPluginApiResponse(SUCCESS_RESPONSE_CODE, responseBody));
List<User> users = authorizationExtension.searchUsers(PLUGIN_ID, "bob", Collections.singletonList(new SecurityAuthConfig("ldap", "cd.go.ldap", create("foo", false, "bar"))));
assertRequest(requestArgumentCaptor.getValue(), AUTHORIZATION_EXTENSION, "1.0", REQUEST_SEARCH_USERS, requestBody);
assertThat(users).hasSize(1).contains(new User("bob", "Bob", "bob@example.com"));
}
Aggregations