mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 21:27:31 +00:00
Patch LDAP issue
This commit is contained in:
@@ -103,41 +103,34 @@ export const registerLdapRouter = async (server: FastifyZodProvider) => {
|
|||||||
: {})
|
: {})
|
||||||
});
|
});
|
||||||
|
|
||||||
ldapClient.bind(ldapConfig.bindDN, ldapConfig.bindPass, (err) => {
|
const groupFilter = "(|(memberUid={{.Username}})(member={{.UserDN}})(uniqueMember={{.UserDN}}))";
|
||||||
if (err) {
|
const searchFilter =
|
||||||
|
ldapConfig.groupSearchFilter ||
|
||||||
|
groupFilter.replace("{{.Username}}", user.uid).replace("{{.UserDN}}", user.dn);
|
||||||
|
|
||||||
|
searchGroups(ldapClient, searchFilter, ldapConfig.groupSearchBase)
|
||||||
|
.then((groups) => {
|
||||||
ldapClient.unbind();
|
ldapClient.unbind();
|
||||||
return cb(err);
|
return server.services.ldap.ldapLogin({
|
||||||
}
|
ldapConfigId: ldapConfig.id,
|
||||||
|
externalId: user.uidNumber,
|
||||||
const groupFilter =
|
username: user.uid,
|
||||||
ldapConfig.groupSearchFilter ||
|
firstName: user.givenName,
|
||||||
"(|(memberUid={{.Username}})(member={{.UserDN}})(uniqueMember={{.UserDN}}))";
|
lastName: user.sn,
|
||||||
const searchFilter = groupFilter.replace("{{.Username}}", user.uid).replace("{{.UserDN}}", user.dn);
|
emails: user.mail ? [user.mail] : [],
|
||||||
|
groups,
|
||||||
searchGroups(ldapClient, searchFilter, ldapConfig.groupSearchBase)
|
relayState: ((req as unknown as FastifyRequest).body as { RelayState?: string }).RelayState,
|
||||||
.then((groups) => {
|
orgId: (req as unknown as FastifyRequest).ldapConfig.organization
|
||||||
ldapClient.unbind();
|
|
||||||
return server.services.ldap.ldapLogin({
|
|
||||||
ldapConfigId: ldapConfig.id,
|
|
||||||
externalId: user.uidNumber,
|
|
||||||
username: user.uid,
|
|
||||||
firstName: user.givenName,
|
|
||||||
lastName: user.sn,
|
|
||||||
emails: user.mail ? [user.mail] : [],
|
|
||||||
groups,
|
|
||||||
relayState: ((req as unknown as FastifyRequest).body as { RelayState?: string }).RelayState,
|
|
||||||
orgId: (req as unknown as FastifyRequest).ldapConfig.organization
|
|
||||||
});
|
|
||||||
})
|
|
||||||
.then(({ isUserCompleted, providerAuthToken }) => {
|
|
||||||
cb(null, { isUserCompleted, providerAuthToken });
|
|
||||||
})
|
|
||||||
.catch((err2) => {
|
|
||||||
ldapClient.unbind();
|
|
||||||
logger.error(err);
|
|
||||||
cb(err2, false);
|
|
||||||
});
|
});
|
||||||
});
|
})
|
||||||
|
.then(({ isUserCompleted, providerAuthToken }) => {
|
||||||
|
cb(null, { isUserCompleted, providerAuthToken });
|
||||||
|
})
|
||||||
|
.catch((err2) => {
|
||||||
|
ldapClient.unbind();
|
||||||
|
logger.error(err2);
|
||||||
|
cb(err2, false);
|
||||||
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error(error);
|
logger.error(error);
|
||||||
return cb(error, false);
|
return cb(error, false);
|
||||||
|
|||||||
@@ -14,19 +14,24 @@ export const searchGroups = async (
|
|||||||
},
|
},
|
||||||
(err, res) => {
|
(err, res) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject(err);
|
return reject(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
const groups: { dn: string; cn: string }[] = [];
|
const groups: { dn: string; cn: string }[] = [];
|
||||||
|
|
||||||
res.on("searchEntry", (entry) => {
|
res.on("searchEntry", (entry) => {
|
||||||
groups.push({ dn: entry.object.dn, cn: entry.object.cn as string });
|
const dn = entry.dn.toString();
|
||||||
});
|
const regex = /cn=([^,]+)/;
|
||||||
|
const match = dn.match(regex);
|
||||||
|
// parse the cn from the dn
|
||||||
|
const cn = (match && match[1]) as string;
|
||||||
|
|
||||||
|
groups.push({ dn, cn });
|
||||||
|
});
|
||||||
res.on("error", (error) => {
|
res.on("error", (error) => {
|
||||||
|
console.error(`error: ${error.message}`);
|
||||||
reject(error);
|
reject(error);
|
||||||
});
|
});
|
||||||
|
|
||||||
res.on("end", () => {
|
res.on("end", () => {
|
||||||
resolve(groups);
|
resolve(groups);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ export const authLoginServiceFactory = ({
|
|||||||
const decodedProviderToken = validateProviderAuthToken(providerAuthToken, email);
|
const decodedProviderToken = validateProviderAuthToken(providerAuthToken, email);
|
||||||
|
|
||||||
authMethod = decodedProviderToken.authMethod;
|
authMethod = decodedProviderToken.authMethod;
|
||||||
if (isAuthMethodSaml(authMethod) && decodedProviderToken.orgId) {
|
if ((isAuthMethodSaml(authMethod) || authMethod === AuthMethod.LDAP) && decodedProviderToken.orgId) {
|
||||||
organizationId = decodedProviderToken.orgId;
|
organizationId = decodedProviderToken.orgId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user