AuthManager

Ikhtisar

AuthManager adalah modul manajemen autentikasi user di NocoBase, digunakan untuk mendaftarkan tipe autentikasi user yang berbeda.

Penggunaan Dasar

const authManager = new AuthManager({
  // Digunakan untuk mendapatkan identifier authenticator saat ini dari header request
  authKey: 'X-Authenticator',
});

// Mengatur method penyimpanan dan pengambilan authenticator dari AuthManager
authManager.setStorer({
  get: async (name: string) => {
    return db.getRepository('authenticators').find({ filter: { name } });
  },
});

// Mendaftarkan satu tipe autentikasi
authManager.registerTypes('basic', {
  auth: BasicAuth,
  title: 'Password',
});

// Menggunakan middleware autentikasi
app.resourceManager.use(authManager.middleware());

Penjelasan Konsep

  • Tipe Autentikasi (AuthType): Berbagai metode autentikasi user, contoh: password, SMS, OIDC, SAML, dll.
  • Authenticator (Authenticator): Entity metode autentikasi, sebenarnya disimpan di tabel data, sesuai dengan record konfigurasi tipe autentikasi (AuthType) tertentu. Satu metode autentikasi dapat memiliki beberapa authenticator, sesuai dengan beberapa konfigurasi, menyediakan metode autentikasi user yang berbeda.
  • Identifier Authenticator (Authenticator name): Identifier unik dari authenticator, digunakan untuk menentukan metode autentikasi yang digunakan oleh request saat ini.

Method Class

constructor()

Constructor, membuat instance AuthManager.

Signature

  • constructor(options: AuthManagerOptions)

Tipe

export interface JwtOptions {
  secret: string;
  expiresIn?: string;
}

export type AuthManagerOptions = {
  authKey: string;
  default?: string;
  jwt?: JwtOptions;
};

Detail

AuthManagerOptions
PropertiTipeDeskripsiDefault
authKeystringOpsional, key di header request yang menyimpan identifier authenticator saat iniX-Authenticator
defaultstringOpsional, identifier authenticator defaultbasic
jwtJwtOptionsOpsional, jika menggunakan JWT untuk autentikasi, dapat dikonfigurasi-
JwtOptions
PropertiTipeDeskripsiDefault
secretstringSecret tokenX-Authenticator
expiresInstringOpsional, masa berlaku token7d

setStorer()

Mengatur method penyimpanan dan pengambilan data authenticator.

Signature

  • setStorer(storer: Storer)

Tipe

export interface Authenticator = {
  authType: string;
  options: Record<string, any>;
  [key: string]: any;
};

export interface Storer {
  get: (name: string) => Promise<Authenticator>;
}

Detail

Authenticator
PropertiTipeDeskripsi
authTypestringTipe autentikasi
optionsRecord<string, any>Konfigurasi terkait authenticator
Storer

Storer adalah interface penyimpanan authenticator, berisi satu method.

  • get(name: string): Promise<Authenticator> - Mendapatkan authenticator melalui identifier authenticator. Di NocoBase, tipe yang sebenarnya dikembalikan adalah AuthModel.

registerTypes()

Mendaftarkan tipe autentikasi.

Signature

  • registerTypes(authType: string, authConfig: AuthConfig)

Tipe

export type AuthExtend<T extends Auth> = new (config: Config) => T;

type AuthConfig = {
  auth: AuthExtend<Auth>; // The authentication class.
  title?: string; // The display name of the authentication type.
};

Detail

PropertiTipeDeskripsi
authAuthExtend<Auth>Implementasi tipe autentikasi, lihat Auth
titlestringOpsional. Judul tipe autentikasi yang ditampilkan di frontend

listTypes()

Mendapatkan daftar tipe autentikasi yang sudah didaftarkan.

Signature

  • listTypes(): { name: string; title: string }[]

Detail

PropertiTipeDeskripsi
namestringIdentifier tipe autentikasi
titlestringJudul tipe autentikasi

get()

Mendapatkan authenticator.

Signature

  • get(name: string, ctx: Context)

Detail

PropertiTipeDeskripsi
namestringIdentifier authenticator
ctxContextKonteks request

middleware()

Middleware autentikasi. Mendapatkan authenticator saat ini, melakukan autentikasi user.