Come Db2 carica i plug-in di sicurezza
In modo che il sistema di database Db2 disponga delle informazioni necessarie per richiamare le funzioni del plug-in di sicurezza, un plug-in di sicurezza deve avere una funzione di inizializzazione impostata correttamente.
- Plug-in di autenticazione lato server:
db2secServerAuthPluginInit() - Plug-in di autenticazione lato client
db2secClientAuthPluginInit() - Plug-in gruppo:
db2secGroupPluginInit()
- Il numero di versione più elevato della struttura del puntatore di funzione che l'istanza Db2 che richiama il plug-in può supportare
- Un puntatore a una struttura contenente puntatori a tutte le API che richiedono l'implementazione
- Un puntatore a una funzione che aggiunge messaggi di log ai file di log db2diag
- Un puntatore a una stringa di messaggio di errore
- La lunghezza del messaggio di errore
SQL_API_RC SQL_API_FN db2secGroupPluginInit(
db2int32 version,
void *group_fns,
db2secLogMessage *logMessage_fn,
char **errormsg,
db2int32 *errormsglen);
extern
"C". Db2 si basa sul programma di caricamento dinamico del sistema operativo sottostante per gestire i costruttori e i distruttori C++ utilizzati all'interno di una libreria di plug-in scritta dall'utente C++.- Assegnare il puntatore delle funzioni ad un puntatore ad una struttura di funzioni appropriata
- Specificare i puntatori alle altre funzioni nella libreria
- Specificare il numero di versione della struttura del puntatore della funzione che si sta restituendo
Db2 può potenzialmente richiamare la funzione di inizializzazione del plug - in più di una volta. Questa situazione può verificarsi quando un'applicazione carica dinamicamente la libreria client Db2 , la scarica e la ricarica nuovamente, quindi esegue le funzioni di autenticazione da un plugin prima e dopo il ricaricamento. In questa situazione, la libreria di plug-in potrebbe non essere scaricata e quindi ricaricata; tuttavia, questo comportamento varia a seconda del sistema operativo.
Un altro esempio di Db2 che emette più chiamate a una funzione di inizializzazione del plug-in si verifica durante l'esecuzione di procedure memorizzate o di chiamate di sistema federato, in cui il server di database può agire come un client. Se i plug-in client e server sul server di database si trovano nello stesso file, Db2 potrebbe richiamare due volte la funzione di inizializzazione del plug - in.
Se il plug-in rileva che db2secGroupPluginInit viene richiamato più di una volta, deve gestire questo evento come se fosse stato indicato di terminare e reinizializzare la libreria di plug - in. Per questo motivo, la funzione di inizializzazione del plug-in deve eseguire tutte le attività di ripulitura che una chiamata a db2secPluginTerm eseguirebbe prima di restituire nuovamente la serie di puntatori di funzione.
Su un server Db2 in esecuzione su un sistema operativo basato su UNIX o Linux, Db2 può potenzialmente caricare e inizializzare le librerie di plug-in più di una volta in processi differenti.