4D Netkit: Personalización de la interfaz de conexión OAuth 2.0

Traducido automáticamente de Deepl

Algunos de ustedes pueden necesitar gestionar la visualización de la interfaz de conexión durante una conexión OAuth 2.0 por razones técnicas o de diseño. Desde 4D 20 R6, puede elegir no abrir automáticamente un navegador web para mostrar la interfaz de conexión, sino utilizar el authenticateURI para mostrarla donde desee.

En esta entrada de blog, recorreremos un ejemplo de apertura de la interfaz de conexión de Microsoft dentro de un área web.

HDI Netkit BrowserAutoOpen false

Ejemplo

En el siguiente ejemplo, veremos cómo abrir la interfaz de inicio de sesión de Microsoft en un área web. Para ello, es necesario crear un formulario con un área web llamada «WAConnection».

En primer lugar, vamos a crear un método OAuth2GetToken para gestionar la visualización de la interfaz de conexión en el área web y esperar a que se reciba el token. Como este método será llamado en un worker, usamos el comando CALL FORM para mostrar la información en el formulario actual:

#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())

Entonces hay que llamar a este método en un worker con browserAutoOpen con el atributo false en los parámetros de la credencial:

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)

Así, si abres tu formulario y ejecutas el código anterior, la interfaz de conexión se mostrará en tu área web, y el webserver 4D esperará el token:

Conclusión

Usando esta funcionalidad, los desarrolladores pueden evitar la apertura automática del navegador web y ganar control sobre la presentación de la interfaz de conexión. Esta flexibilidad permite una experiencia de usuario más integrada y adaptada a las necesidades específicas de su aplicación.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené se unió al equipo de 4D Program en noviembre de 2016. Como Product Owner, está a cargo de escribir las historias de usuario y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la característica entregada cumple con las necesidades del cliente. Después de obtener una licenciatura en Ciencias de la Computación en el CNAM, Fabrice se unió a una pequeña empresa de publicación de software como desarrollador Windev. A continuación, trabajó para diferentes empresas del sector industrial y comercial como desarrollador de Windev y de la web, así como asesor técnico de nuevas funcionalidades.