Comment se connecter à l'API avec authentification Windows / NTLM / LDAP ?Bonjour les utilisateurs de jmp,
J'essaye de me connecter à nos services internes/api en JMP/JSL (JMP14) avec la méthode de requête HTTP
comme
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 );
L'URL nécessite une authentification Windows (Ldap, NTLM).
Quelqu'un connaît-il un moyen de fournir les informations d'identification Windows [nom d'utilisateur, mot de passe] pour accéder à cette ressource via la méthode de requête HTTP ?
Les questions connexes sont abordées par exemple ici :
Requête http avec authentification utilisant l'identité Windows
Premiers pas avec REST dans JMP
Importation de données de service Web : la nouvelle requête HTTP dans JMP® 14 ( US 2018 231 )
merci diz
Accès aux donnéesRe : Comment se connecter à l'API avec authentification Windows / NTLM / LDAP ?Merci!
Re : Comment se connecter à l'API avec authentification Windows / NTLM / LDAP ?Salut Bryan,
Merci pour la mise à jour! Cette solution fonctionne et constitue la vraie solution ! J'ai marqué cela comme solution.
meilleur, dis
Re : Comment se connecter à l'API avec authentification Windows / NTLM / LDAP ?Le formulaire est une option.
Le basique en est un autre.
En un mot (exemples à suivre), le formulaire consiste à envoyer des paires clé/valeur à votre service Web, un peu comme si vous vous connectiez avec un formulaire de page Web.
L'authentification de base se trouve dans l'en-tête (option HTTP Request << Headers), où l'authentification est
nom d'utilisateur : mot de passe (codé en base 64). Vous pouvez aussi utiliser:
request << Nom d'utilisateur("mon nom d'utilisateur");
request << Mot de passe("mon mot de passe");
au lieu de définir les informations d'en-tête directement pour Basic.
Vous voudriez que les deux, si possible, soient sur https.
En règle générale, votre service Web définit un cookie pour gérer les demandes ultérieures.
Si vous utilisez Basic, cela ne sera pas nécessaire tant que vous définissez les informations d'en-tête avec chaque requête.
Si vous optez pour l'option Passport pour le service Web, Passport agit comme un médiateur, il peut digérer le formulaire et Basic (et autres) et effectuer l'autorisation back-end que vous souhaitez.
La plupart des services Web, comme Office 365, Google, Spotify, JMP Live, utilisent OAuth2 (pas basé sur des formulaires ou Basic), mais cela est dû à la visibilité externe des sites (qui ajoute de la complexité). S'il s'agit d'un système interne derrière votre pare-feu, etc., l'utilisation de base ou basée sur un formulaire https est votre option la plus simple, à mon avis.
Re : Comment se connecter à l'API avec authentification Windows / NTLM / LDAP ?Bonjour, merci pour cette suggestion ! Bien, que cette option pourrait fonctionner, mais ce n’est pas ce que je recherchais à l’origine. Quoi qu'il en soit, comme certaines solutions de contournement sont proposées, je marquerai cette discussion comme résolue ! Merci Diz
Re : Comment se connecter à l'API avec authentification Windows / NTLM / LDAP ?Oauth2 serait-il une option ? JMP 15 l'a dans l'index de script.
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 : Comment se connecter à l'API avec authentification Windows / NTLM / LDAP ?Bonjour Bryan, merci pour cette information, c'est bon à savoir !
Existe-t-il un exemple ou un extrait de code dans la documentation JSL sur la façon d'utiliser l'authentification http Basic basée sur un formulaire avec jmp ? C'est ce que j'aimerais essayer avant de changer quelque chose dans le logiciel serveur.
merci encore diz
Re : Comment se connecter à l'API avec authentification Windows / NTLM / LDAP ?La requête HTTP ne s'authentifie pas directement auprès de NTLM/LDAP.
Vous voudriez utiliser quelque chose comme Passport http://www.passportjs.org/
dans votre service Web, puis utilisez l'authentification par formulaire ou l'authentification de base sur https.
-Bryan