add Keycloak, add better canvas
This commit is contained in:
56
server/keycloak.ts
Normal file
56
server/keycloak.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
|
||||
import Keycloak from 'keycloak-connect';
|
||||
import session from 'express-session';
|
||||
import { type Express } from 'express';
|
||||
|
||||
interface KeycloakConfig {
|
||||
realm: string;
|
||||
'auth-server-url': string;
|
||||
'ssl-required': string;
|
||||
resource: string;
|
||||
'public-client': boolean;
|
||||
'confidential-port': number;
|
||||
}
|
||||
|
||||
// Keycloak Konfiguration aus Umgebungsvariablen oder Standard
|
||||
const keycloakConfig: KeycloakConfig = {
|
||||
realm: process.env.KEYCLOAK_REALM || 'rplace',
|
||||
'auth-server-url': process.env.KEYCLOAK_AUTH_URL || 'http://localhost:8080/auth',
|
||||
'ssl-required': 'external',
|
||||
resource: process.env.KEYCLOAK_CLIENT_ID || 'rplace-client',
|
||||
'public-client': true,
|
||||
'confidential-port': 0,
|
||||
};
|
||||
|
||||
// Session Store für Keycloak
|
||||
const memoryStore = session.MemoryStore ? new session.MemoryStore() : undefined;
|
||||
|
||||
export function setupKeycloak(app: Express) {
|
||||
// Session Middleware
|
||||
const sessionConfig = {
|
||||
secret: process.env.SESSION_SECRET || 'rplace-secret-key',
|
||||
resave: false,
|
||||
saveUninitialized: true,
|
||||
store: memoryStore,
|
||||
cookie: {
|
||||
secure: process.env.NODE_ENV === 'production',
|
||||
httpOnly: true,
|
||||
maxAge: 24 * 60 * 60 * 1000, // 24 Stunden
|
||||
},
|
||||
};
|
||||
|
||||
app.use(session(sessionConfig));
|
||||
|
||||
// Keycloak initialisieren
|
||||
const keycloak = new Keycloak({ store: memoryStore }, keycloakConfig);
|
||||
|
||||
// Keycloak Middleware
|
||||
app.use(keycloak.middleware({
|
||||
logout: '/logout',
|
||||
admin: '/',
|
||||
}));
|
||||
|
||||
return keycloak;
|
||||
}
|
||||
|
||||
export { keycloakConfig };
|
||||
Reference in New Issue
Block a user