mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
CB-2580 aws open id provider (#1861)
* CB-2580 aws open id provider * CB-2580 read team meta in getUserTeams --------- Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
This commit is contained in:
co-authored by
Daria Marutkina
parent
0d665a6b7b
commit
752f913db0
+1
-1
@@ -42,7 +42,7 @@ public interface SMAuthProviderExternal<AUTH_SESSION extends SMSession> extends
|
||||
@NotNull
|
||||
default Map<String, Object> authExternalUser(
|
||||
@NotNull DBRProgressMonitor monitor,
|
||||
@NotNull Map<String, Object> providerConfig, // Auth provider configuration (e.g. 3rd party auth server address)
|
||||
@Nullable SMAuthProviderCustomConfiguration providerConfig, // Auth provider configuration (e.g. 3rd party auth server address)
|
||||
@NotNull Map<String, Object> authParameters // Passed auth parameters (e.g. user name or password)
|
||||
) throws DBException {
|
||||
return authParameters;
|
||||
|
||||
+3
-3
@@ -35,13 +35,13 @@ import org.jkiss.dbeaver.model.security.SMConstants;
|
||||
import org.jkiss.dbeaver.model.security.SMController;
|
||||
import org.jkiss.dbeaver.model.security.exception.SMException;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
public class RPSessionHandler implements DBWSessionHandler {
|
||||
|
||||
@@ -76,7 +76,7 @@ public class RPSessionHandler implements DBWSessionHandler {
|
||||
Map<String, Object> sessionParameters = webSession.getSessionParameters();
|
||||
sessionParameters.put(SMConstants.SESSION_PARAM_TRUSTED_USER_TEAMS, userTeams);
|
||||
Map<String, Object> userCredentials = authProviderExternal.authExternalUser(
|
||||
webSession.getProgressMonitor(), sessionParameters, credentials);
|
||||
webSession.getProgressMonitor(), null, credentials);
|
||||
String currentSmSessionId = webSession.getUser() == null ? null : webSession.getUserContext().getSmSessionId();
|
||||
try {
|
||||
SMAuthInfo smAuthInfo = securityController.authenticate(
|
||||
|
||||
+15
-4
@@ -219,20 +219,22 @@ public class CBEmbeddedSecurityController implements SMAdminController, SMAuthen
|
||||
@NotNull
|
||||
@Override
|
||||
public SMTeam[] getUserTeams(String userId) throws DBException {
|
||||
Map<String, SMTeam> teams = new LinkedHashMap<>();
|
||||
try (Connection dbCon = database.openConnection()) {
|
||||
try (PreparedStatement dbStat = dbCon.prepareStatement(
|
||||
database.normalizeTableNames("SELECT R.* FROM {table_prefix}CB_USER_TEAM UR, {table_prefix}CB_TEAM R " +
|
||||
"WHERE UR.USER_ID=? AND UR.TEAM_ID=R.TEAM_ID"))
|
||||
) {
|
||||
dbStat.setString(1, userId);
|
||||
List<SMTeam> teams = new ArrayList<>();
|
||||
try (ResultSet dbResult = dbStat.executeQuery()) {
|
||||
while (dbResult.next()) {
|
||||
teams.add(fetchTeam(dbResult));
|
||||
var team = fetchTeam(dbResult);
|
||||
teams.put(team.getTeamId(), team);
|
||||
}
|
||||
}
|
||||
return teams.toArray(new SMTeam[0]);
|
||||
}
|
||||
readSubjectsMetas(dbCon, SMSubjectType.team, null, teams);
|
||||
return teams.values().toArray(new SMTeam[0]);
|
||||
} catch (SQLException e) {
|
||||
throw new DBCException("Error while reading user teams", e);
|
||||
}
|
||||
@@ -1219,9 +1221,18 @@ public class CBEmbeddedSecurityController implements SMAdminController, SMAuthen
|
||||
Map<String, Object> securedUserIdentifyingCredentials = userCredentials;
|
||||
WebAuthProviderDescriptor authProviderDescriptor = getAuthProvider(authProviderId);
|
||||
var authProviderInstance = authProviderDescriptor.getInstance();
|
||||
|
||||
SMAuthProviderCustomConfiguration providerConfig = authProviderConfigurationId == null
|
||||
? null
|
||||
: application.getAuthConfiguration().getAuthProviderConfiguration(authProviderConfigurationId);
|
||||
|
||||
if (SMAuthProviderExternal.class.isAssignableFrom(authProviderInstance.getClass())) {
|
||||
var authProviderExternal = (SMAuthProviderExternal<?>) authProviderInstance;
|
||||
securedUserIdentifyingCredentials = authProviderExternal.authExternalUser(authProgressMonitor, Map.of(), userCredentials);
|
||||
securedUserIdentifyingCredentials = authProviderExternal.authExternalUser(
|
||||
authProgressMonitor,
|
||||
providerConfig,
|
||||
userCredentials
|
||||
);
|
||||
}
|
||||
|
||||
var filteredUserCreds = filterSecuredUserData(
|
||||
|
||||
Reference in New Issue
Block a user