Security News
PyPI Introduces Digital Attestations to Strengthen Python Package Security
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
@immobiliarelabs/backstage-plugin-ldap-auth-backend
Advanced tools
Backstage LDAP Authentication plugin, this packages adds backend authentication and token generation/validation/management; sibling of @immobiliarelabs/backstage-plugin-ldap-auth
Customizable Authentication backend provider for LDAP servers for your Backstage deployment
Works either on simple stand-alone process or scaled infrastracture spanning multiple deployments using the shared PostgreSQL instance that Backstage already uses!
This plugin is not meant to be used alone but in pair with:
All the current LTS versions are supported.
These packages are available on npm.
You can install them in your backstage installation using yarn workspace
# install yarn if you don't have it
$ npm install -g yarn
# install backend plugin
$ yarn workspace backend add @immobiliarelabs/backstage-plugin-ldap-auth-backend
# install frontend plugin
$ yarn workspace app add @immobiliarelabs/backstage-plugin-ldap-auth
This documentation assumes that you have already scaffolded your Backstage instance from the official
@backstage/create-app
, all files that we're going to customize here are the one already created by the CLI!
Adds connection configuration inside your backstage YAML config file, eg:
app-config.yaml
This fields are all required
key | description |
---|---|
url | Array of ldap connection strings |
rejectUnauthorized | Reject non HTTPS traffic, this also set secure cookies when true |
userDn | User distinguished name directory location |
userSearchBase | Userbase search location |
auth:
environment: ENV_NAME
providers:
ldap:
ENV_NAME:
url:
- 'ldaps://123.123.123.123'
rejectUnauthorized: true
userDn: 'ou=usr,dc=ns,dc=frm'
userSearchBase: 'dc=ns,dc=frm'
If you didn't have already, we need to configure the official LDAP plugin to imports and keep in syncs users
packages/backend/src/plugins/catalog.ts
import type { Router } from 'express';
import type { PluginEnvironment } from '../types';
import { CatalogBuilder } from '@backstage/plugin-catalog-backend';
import { ScaffolderEntitiesProcessor } from '@backstage/plugin-scaffolder-backend';
import {
LdapOrgEntityProvider,
} from '@backstage/plugin-catalog-backend-module-ldap';
export default async function createPlugin(
env: PluginEnvironment,
): Promise<Router> {
const builder = await CatalogBuilder.create(env);
builder.addEntityProvider(
LdapOrgEntityProvider.fromConfig(env.config, {
id: '<YOUR-ID>',
target: 'ldaps://<YOUR-ADDRESS>',
logger: env.logger,
schedule: env.scheduler.createScheduledTaskRunner({
frequency: // whatever
timeout: // whatever
}),
}),
);
builder.addProcessor(new ScaffolderEntitiesProcessor());
const { processingEngine, router } = await builder.build();
await processingEngine.start();
return router;
}
This assumes a basic usage: single process without custom auth function or user object customization and in-memory token storage
For more uses cases you can see the example folders
packages/backend/src/plugins/auth.ts
import { createRouter } from '@backstage/plugin-auth-backend';
import { Router } from 'express';
import { PluginEnvironment } from '../types';
import { ldap } from '@immobiliarelabs/backstage-plugin-ldap-auth-backend';
export default async function createPlugin(
env: PluginEnvironment
): Promise<Router> {
return await createRouter({
logger: env.logger,
config: env.config,
database: env.database,
discovery: env.discovery,
tokenManager: env.tokenManager,
providerFactories: {
ldap: ldap.create({}),
},
});
}
More on this in the frontend plugin documentation here
We need to replace the existing Backstage demo authentication page with our custom one!
In the App.tsx
file, change the createApp
function adding a components
with our custom SignInPage
In the App.tsx
file change the createApp
function to provide use our custom SignInPage
in the components
key.
Note: This components isn't only UI, it also brings all the token state management and HTTP API calls to the backstage auth routes we already configured in the backend part.
packages/app/src/App.tsx
import { LdapAuthFrontendPage } from '@immobiliarelabs/backstage-plugin-ldap-auth';
const app = createApp({
// ...
components: {
SignInPage: (props) => (
<LdapAuthFrontendPage {...props} provider="ldap" />
),
},
// ...
});
And you're ready to go! If you need more use cases, like having multiple processes and need a shared token store instead of in-memory look at the example folders
Backstage Plugin LDAP Auth was created by the amazing Node.js team at ImmobiliareLabs, the Tech dept of Immobiliare.it, the #1 real estate company in Italy.
We are currently using Backstage Plugin LDAP Auth in our products as well as our internal toolings.
If you are using Backstage Plugin LDAP Auth in production drop us a message.
Made with ❤️ by ImmobiliareLabs & Contributors
We'd love for you to contribute to Backstage Plugin LDAP Auth! If you have any questions on how to use Backstage Plugin LDAP Auth, bugs and enhancement please feel free to reach out by opening a GitHub Issue.
Backstage Plugin LDAP Auth is licensed under the MIT license.
See the LICENSE file for more information.
FAQs
Backstage LDAP Authentication plugin, this packages adds backend authentication and token generation/validation/management; sibling of @immobiliarelabs/backstage-plugin-ldap-auth
The npm package @immobiliarelabs/backstage-plugin-ldap-auth-backend receives a total of 4 weekly downloads. As such, @immobiliarelabs/backstage-plugin-ldap-auth-backend popularity was classified as not popular.
We found that @immobiliarelabs/backstage-plugin-ldap-auth-backend demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.