¿Cómo conectarse a API con autenticación de Windows/NTLM/LDAP?Hola usuarios de jmp,
Intento conectarme a nuestros servicios internos/api en JMP/JSL (JMP14) con el método de solicitud HTTP
como
url = "http://192.168.1.1/api/getsomedata;
request = New HTTP Request(
URL( url ),
Method( "Post" ),
Form(
Fields([[
"maxLimit" => "100"
]])
)
);
json = request << Send();
jsl_json = Parse JSON( json );
La URL necesita autenticación de Windows (Ldap, NTLM).
¿Alguien sabe alguna manera de proporcionar [nombre de usuario, contraseña] credenciales de Windows para acceder a ese recurso a través del método de solicitud HTTP?
Las preguntas relacionadas se discuten, por ejemplo, aquí:
Solicitud http con autenticación usando identidad de Windows
Comenzando con REST en JMP
Importación de datos de servicios web: la nueva solicitud HTTP en JMP® 14 (US 2018 231)
gracias diz
Acceso a los datosRe: ¿Cómo conectarse a API con autenticación de Windows/NTLM/LDAP?¡Gracias!
Re: ¿Cómo conectarse a API con autenticación de Windows/NTLM/LDAP?Hola Bryan,
¡gracias por la actualización! ¡Esta solución funciona y es la verdadera solución! Marqué esto como solución.
mejor, mareado
Re: ¿Cómo conectarse a API con autenticación de Windows/NTLM/LDAP?Una opción es basada en formularios.
Básico es otro.
En pocas palabras (ejemplos a continuación), el formulario basado en el envío de pares clave/valor a su servicio web es muy similar a iniciar sesión con un formulario de página web.
La autenticación básica se encuentra en el encabezado (opción Solicitud HTTP << Encabezados), donde se encuentra la autenticación.
nombre de usuario: contraseña (codificada en Base 64). También puedes usar:
solicitud << Nombre de usuario("mi nombre de usuario");
solicitar << Contraseña("mi contraseña");
en lugar de configurar la información del encabezado directamente para Básico.
Querrás que ambos, si es posible, sean a través de https.
Normalmente, su servicio web establecería una cookie para gestionar solicitudes posteriores.
Si usa Básico, no será necesario siempre que configure la información del encabezado con cada solicitud.
Si elige la opción Passport para el servicio web, Passport actúa como mediador, puede digerir el formulario y el Básico (y otros) y realizar la autorización de back-end que desee.
La mayoría de los servicios web, como Office 365, Google, Spotify, JMP Live utilizan OAuth2 (no basado en formularios ni básico), pero eso se debe a la visibilidad externa de los sitios (lo que añade complejidad). Si es interno detrás de su firewall, etc., en mi opinión, la opción más sencilla es usar https de forma básica o basada en formularios.
Re: ¿Cómo conectarse a API con autenticación de Windows/NTLM/LDAP?Hola, gracias por esa sugerencia! Bien, que esta opción podría funcionar, pero no es lo que buscaba originalmente. De todos modos, dado que se ofrecen algunas soluciones, marcaré esta discusión como resuelta. gracias diz
Re: ¿Cómo conectarse a API con autenticación de Windows/NTLM/LDAP?¿Oauth2 sería una opción? JMP 15 tiene esto en el índice de secuencias de comandos.
Names Default To Here( 1 );
/*
https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow
*/
/*
Note: the "code" parameter is set automatically after the redirect occurs
*/
auth_url = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize";
token_url = "https://login.microsoftonline.com/common/oauth2/v2.0/token";
redirect_url = "http://localhost/myapp/";
client_id = "6731de76-14a6-49ae-97bc-6eba6914391e";
client_secret = "JqQX2PNo9bpM0uEihUPzyrh";
scope = "openid offline_access https://graph.microsoft.com/user.read";
auth_fields = [=> ];
token_fields = [=> ];
oauth2 = New OAuth2();
oauth2 << Grant Type( "Authorization Code" );
oauth2 << Auth URL( auth_url );
oauth2 << Token URL( token_url );
oauth2 << Redirect URL( redirect_url );
auth_fields["scope"] = scope;
auth_fields["client_id"] = client_id;
token_fields["client_secret"] = client_secret;
oauth2 << Auth Fields( auth_fields );
oauth2 << Token Fields( token_fields );
auth_header = oauth2 << Get Auth Header();
request = New HTTP Request(
URL( "https://graph.microsoft.com/v1.0/me" ),
Headers( {auth_header} ),
Method( "GET" )
);
data = request << Send;
Re: ¿Cómo conectarse a API con autenticación de Windows/NTLM/LDAP?Hola Bryan, gracias por esa información, ¡es bueno saberlo!
¿Hay un ejemplo o fragmento de código en la documentación de JSL sobre cómo utilizar la autenticación básica http basada en formulario con jmp? Me gustaría probar esto antes de cambiar algo en el software del servidor.
gracias de nuevo diz
Re: ¿Cómo conectarse a API con autenticación de Windows/NTLM/LDAP?La solicitud HTTP no se autentica directamente con NTLM/LDAP.
Querrás usar algo como Passport http://www.passportjs.org/
en su servicio web, luego use la autenticación basada en formularios o la autenticación básica a través de https.
-Bryan