4D Netkit: Personalizzazione dell’interfaccia di connessione OAuth 2.0

Tradotto automaticamente da Deepl

Alcuni di voi potrebbero aver bisogno di gestire la visualizzazione dell’interfaccia di connessione durante una connessione OAuth 2.0 per motivi tecnici o di progettazione. A partire da 4D 20 R6, è possibile scegliere di non aprire automaticamente un browser web per visualizzare l’interfaccia di connessione, ma di utilizzare l’authenticateURI per visualizzarla dove si desidera.

In questo post del blog, illustreremo un esempio di apertura dell’interfaccia di accesso Microsoft all’interno di un’area web.

HDI Netkit BrowserAutoOpen false

Esempio

Nell’esempio che segue, vedremo come aprire l’interfaccia di login di Microsoft in un’area Web. A tale scopo, è necessario creare un modulo con un’area Web chiamata “WAConnection”.

Per prima cosa, creiamo un metodo OAuth2GetToken per gestire la visualizzazione dell’interfaccia di connessione nell’area web e attendere la ricezione del token. Poiché questo metodo sarà chiamato in un worker, usiamo il comando CALL FORM per visualizzare le informazioni nel form corrente:

#DECLARE($credential : Object; $CurrentWindows : Integer)

var $OAuth2:=cs.NetKit.OAuth2Provider.new($credential)

// Display the connection page in the web area "WAConnection"
CALL FORM($CurrentWindows; Formula(WA OPEN URL(*; "WAConnection"; $1)); $OAuth2.authenticateURI)

// Wait for the token and save it in the Form.token attribute
CALL FORM($CurrentWindows; Formula(Form.token:=$1); $OAuth2.getToken())

Quindi è necessario chiamare questo metodo in un worker con l’attributo browserAutoOpen con l’attributo false nei parametri della credenziale:

var $credential:={}
$credential.name:="Microsoft"
$credential.permission:="signedIn"
$credential.clientId:="7008ebf5-xxx"
$credential.redirectURI:="http://127.0.0.1:50993/authorize/"
$credential.scope:="https://graph.microsoft.com/.default"
$credential.accessType:="offline"
$credential.prompt:="select_account"
	
// The display of the connection interface is managed by the developer.
// The browser is not automatically opened
$credential.browserAutoOpen:=False
	
// Call of the OAuth2GetToken method
CALL WORKER("OAuth2Worker"; Formula(OAuth2GetToken($1; $2)); $credential; Current form window)

Quindi, se si apre il modulo e si esegue il codice precedente, l’interfaccia di connessione verrà visualizzata nell’area web e il server web 4D attenderà il token:

Conclusione

Utilizzando questa funzione, gli sviluppatori possono evitare l’apertura automatica del browser web e ottenere il controllo sulla presentazione dell’interfaccia di connessione. Questa flessibilità consente di ottenere un’esperienza utente più integrata e adatta alle esigenze specifiche dell’applicazione.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené si è unito al team di 4D Program nel novembre 2016. In qualità di Product Owner, è incaricato di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente.Dopo aver conseguito una laurea in Informatica presso il CNAM, Fabrice è entrato a far parte di una piccola società di pubblicazione di software come sviluppatore Windev. In seguito ha lavorato per diverse aziende del settore industriale e commerciale come sviluppatore Windev e web e come consulente tecnico su nuove funzionalità.