34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import environment from './environment';
|
|
|
|
interface AuthentikConfig {
|
|
issuer: string;
|
|
clientId: string;
|
|
clientSecret: string;
|
|
redirectUri: string;
|
|
tokenEndpoint: string;
|
|
userInfoEndpoint: string;
|
|
authorizeEndpoint: string;
|
|
logoutEndpoint: string;
|
|
}
|
|
|
|
// Authentik's shared endpoints live at /application/o/, not at the per-app issuer path.
|
|
// Issuer example: https://auth.example.com/application/o/myapp/
|
|
// Token endpoint: https://auth.example.com/application/o/token/
|
|
const issuerUrl = new URL(environment.authentik.issuer);
|
|
const pathParts = issuerUrl.pathname.split('/').filter(Boolean);
|
|
const basePath = '/' + pathParts.slice(0, -1).join('/') + '/';
|
|
const baseEndpoint = `${issuerUrl.origin}${basePath}`;
|
|
|
|
const authentikConfig: AuthentikConfig = {
|
|
issuer: environment.authentik.issuer,
|
|
clientId: environment.authentik.clientId,
|
|
clientSecret: environment.authentik.clientSecret,
|
|
redirectUri: environment.authentik.redirectUri,
|
|
tokenEndpoint: `${baseEndpoint}token/`,
|
|
userInfoEndpoint: `${baseEndpoint}userinfo/`,
|
|
authorizeEndpoint: `${baseEndpoint}authorize/`,
|
|
logoutEndpoint: `${baseEndpoint}end-session/`,
|
|
};
|
|
|
|
export default authentikConfig;
|