• connettore
  • bassa-codifica

Come supportiamo una gamma di connettori diversificati

La storia di come supportiamo una gamma di connettori diversificati con una buona esperienza utente e di sviluppo. Con l'aiuto dello sviluppo guidato dalla configurazione, abbiamo creato una piattaforma di connettori a bassa codifica.

Sijie
Sijie
Developer

Introduzione

I connettori svolgono un ruolo critico in Logto. Con il loro aiuto, Logto consente agli utenti finali di utilizzare la registrazione o l'accesso senza password e le capacità di accesso con account social. Logto consente agli utenti di installare o creare i propri connettori, e ci sono già più di 20 connettori ufficiali. I nostri connettori sono progettati per essere altamente flessibili e consentono agli utenti di installare o anche creare i propri. Allo stesso tempo, è facile sviluppare un nuovo connettore. Per raggiungere questo obiettivo, abbiamo progettato e implementato una soluzione chiamata "Dynamic Form" ispirata allo Sviluppo Guidato dalla Configurazione (Config Driven Development, CDD).

Contesto

La configurazione per il connettore di Logto è un JSON che, sebbene flessibile, può essere difficile da modificare e convalidare. All'inizio questo non è un grosso problema, perché in quel momento la maggior parte delle configurazioni JSON era simile a:

Ma poiché supportiamo sempre più fornitori e protocolli, le cose hanno cominciato a cambiare. Prendiamo il "connettore SAML" come esempio, ci sono più di 10 chiavi nella configurazione JSON e il tipo di valore è complesso: ci sono stringhe, numeri, JSON, valori selezionati e stringhe multilinea per i certificati.

Quindi pensiamo che sia il momento di introdurre un modulo ben progettato per sostituire l'editor JSON. Il connettore Logto è progettato per funzionare come un'applicazione di terze parti, quindi non è una soluzione fattibile utilizzare moduli hardcoded. Il risultato è un forte bisogno di moduli dinamici facili da gestire e dotati di una buona esperienza utente allo stesso tempo. Il modulo per il connettore SAML che abbiamo menzionato sopra appare come:

Configurazione del connettore SAML

Che cos'è lo Sviluppo Guidato dalla Configurazione (CDD)

Il CDD, o Sviluppo Guidato dai Componenti, presenta un approccio alternativo alla costruzione di applicazioni. Nel metodo convenzionale, i lead architect creano progetti basati sulle esigenze aziendali; l'applicazione viene quindi sviluppata e distribuita, e ogni modifica viene eseguita attraverso elementi aggiuntivi o attraverso un difficile refactoring.

Al contrario, il CDD si concentra sulla costruzione di componenti indipendenti fin dall'inizio, partendo dal livello più fondamentale. Un'interfaccia, tipicamente JSON, viene stabilita per assemblare l'interfaccia utente di livello superiore. Questo metodo, che coinvolge la combinazione di componenti riutilizzabili e un progetto JSON, consente agli sviluppatori di creare applicazioni in modo più flessibile e scalabile.

L'essenza del CDD risiede nella sua utilizzazione della modularità per realizzare un insieme di componenti debolmente collegati, che vengono poi assemblati usando un'interfaccia standardizzata.

Cos'è un Modulo Dinamico?

Adottare l'approccio dello Sviluppo Guidato dalla Configurazione (CDD) ci consente di creare moduli web dinamici. Questi non sono moduli ordinari con campi statici e immutabili; piuttosto, sono entità dinamiche con campi generati in base a un file JSON. La bellezza di questi moduli web dinamici risiede nella loro flessibilità: se è necessario apportare una modifica nei campi del modulo, basta aggiornare la configurazione JSON. Questo livello di adattabilità rende i moduli web dinamici una soluzione ideale per i connettori Logto, che richiedono diverse configurazioni di modulo sconosciute a Logto.

Progettare lo Schema

Abbiamo progettato lo schema come una gamma di elementi di modulo; ciascun elemento può avere un nome, un'etichetta, un segnaposto e, la cosa più importante, un tipo. Abbiamo 6 tipi di elementi di modulo, definiti come un enum:

E la definizione del tipo di elemento di modulo è:

Quindi lo schema completo è:

Ma c'è un piccolo problema: il tipo di modulo "select" richiede un elenco di opzioni, quindi aggiungi questo campo a FormItem:

Costruire il modulo con React-Hook-Form

Ora che lo schema è impostato, possiamo costruire il modulo nel front end basandoci sullo schema. Useremo React Hook Form per ottenere questo risultato.

React-Hook-Form è uno strumento potente per costruire moduli efficienti e facili da usare in React.

La prima cosa è inizializzare un modulo; supponiamo che la configurazione JSON sia stata recuperata e sia chiamata formItems, e i dati nel modulo siano formData:

Quindi, implementa l'elemento di controllo del modulo secondo il tipo; ecco una semplice dimostrazione:

Conclusione

La versatilità dello Sviluppo Guidato dalla Configurazione (CDD) emerge quando viene applicata alla creazione di moduli dinamici, specialmente nel caso dei connettori di Logto. I vantaggi sono due:

  1. Per gli sviluppatori, semplifica il processo di creazione di moduli interattivi e facili da usare. Invece di gestire complessità di codice intricate, gli sviluppatori devono solo definire un file JSON per ottenere le interfacce utente meglio progettate e intuitive create dal team di Logto.
  2. Per gli utenti, questo approccio semplifica notevolmente il processo di configurazione di un connettore. Elimina la complessità dall'integrazione, rendendo più facile per gli utenti integrare Logto con funzionalità di accesso sociale, così come con servizi email o SMS.

Di recente, gli articoli che promuovono il Low Code sono onnipresenti su Internet. Questa soluzione è stata sviluppata dalla prospettiva delle effettive esigenze degli utenti e crediamo che sia una grande rappresentazione del Low Code.

Vuoi provarlo? Vai su Logto Cloud e scegli un connettore.