45 lines
1.2 KiB
TypeScript

import session from 'express-session'
import Keycloak from 'keycloak-connect'
import { assertKeycloakConfiguration } from './authMode'
type KeycloakEnvConfig = {
serverUrl: string
realm: string
clientId: string
clientSecret?: string
}
const validatedKeycloakConfig = assertKeycloakConfiguration()
const keycloakConfig: KeycloakEnvConfig = {
serverUrl: validatedKeycloakConfig?.serverUrl || 'http://localhost:8080',
realm: validatedKeycloakConfig?.realm || 'equipment-management',
clientId: validatedKeycloakConfig?.clientId || 'equipment-client',
clientSecret: validatedKeycloakConfig?.clientSecret
}
const memoryStore = new session.MemoryStore()
const keycloak = new Keycloak(
{
store: memoryStore,
scope: 'openid profile email'
},
{
realm: keycloakConfig.realm,
'auth-server-url': keycloakConfig.serverUrl,
'ssl-required': 'external',
resource: keycloakConfig.clientId,
'public-client': !keycloakConfig.clientSecret,
credentials: keycloakConfig.clientSecret
? { secret: keycloakConfig.clientSecret }
: undefined,
'confidential-port': 0,
'bearer-only': false,
'verify-token-audience': true,
'use-resource-role-mappings': true
} as any
)
export { keycloak, memoryStore }