Wie stelle ich mit Windows-Authentifizierung/NTLM/LDAP eine Verbindung zur API her?Hallo JMP-Benutzer,
Ich versuche, mit der HTTP-Anforderungsmethode eine Verbindung zu unseren internen Diensten/API in JMP/JSL (JMP14) herzustellen
wie
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 );
Die URL benötigt eine Windows-Authentifizierung (Ldap, NTLM).
Kennt jemand eine Möglichkeit, [Benutzername, Passwort] Windows-Anmeldeinformationen bereitzustellen, um über die HTTP-Anforderungsmethode auf diese Ressource zuzugreifen?
Verwandte Fragen werden z. B. hier besprochen:
HTTP-Anfrage mit Authentifizierung mithilfe der Windows-Identität
Erste Schritte mit REST in JMP
Importieren von Webdienstdaten: Die neue HTTP-Anfrage in JMP® 14 (US 2018 231)
Danke diz
DatenzugriffBetreff: Wie stelle ich eine Verbindung zur API mit Windows-Authentifizierung/NTLM/LDAP her?Danke!
Betreff: Wie stelle ich eine Verbindung zur API mit Windows-Authentifizierung/NTLM/LDAP her?Hallo Bryan,
Danke für das Update! Diese Lösung funktioniert und ist die echte Lösung! Ich habe dies als Lösung markiert.
am besten, diz
Betreff: Wie stelle ich eine Verbindung zur API mit Windows-Authentifizierung/NTLM/LDAP her?Formularbasiert ist eine Option.
Basic ist etwas anderes.
Kurz gesagt (Beispiele folgen im Folgenden) bedeutet formularbasiert das Senden von Schlüssel/Wert-Paaren an Ihren Webservice, ähnlich wie die Anmeldung über ein Webseitenformular.
Die Standardauthentifizierung befindet sich im Header (Option „HTTP Request << Headers“), wo sich die Authentifizierung befindet
Benutzername:Passwort (Base 64-kodiert). Sie können auch Folgendes verwenden:
request << Benutzername("mein Benutzername");
request << Password("mein Passwort");
anstatt die Header-Informationen direkt für Basic festzulegen.
Sie möchten, dass beide, wenn möglich, über https erfolgen.
Normalerweise setzt Ihr Webservice ein Cookie, um nachfolgende Anfragen zu verwalten.
Wenn Sie Basic verwenden, ist dies nicht erforderlich, solange Sie die Header-Informationen bei jeder Anfrage festlegen.
Wenn Sie die Passport-Option für den Webservice wählen, fungiert Passport als Vermittler, kann Formulare und Basic (und andere) verarbeiten und die gewünschte Back-End-Autorisierung durchführen.
Die meisten Webdienste wie Office 365, Google, Spotify und JMP Live verwenden OAuth2 (nicht formularbasiert oder Basic), aber das liegt an der externen Sichtbarkeit der Websites (die die Komplexität erhöht). Wenn es sich um eine interne Lösung hinter Ihrer Firewall usw. handelt, ist die einfache oder formularbasierte Verwendung von https meiner Meinung nach die einfachste Option.
Betreff: Wie stelle ich eine Verbindung zur API mit Windows-Authentifizierung/NTLM/LDAP her?Hallo, danke für diesen Vorschlag! Gut, dass diese Option funktionieren könnte, aber es ist nicht das, wonach ich ursprünglich gesucht habe. Da es jedoch einige Problemumgehungen gibt, werde ich diese Diskussion als gelöst markieren! Danke diz
Betreff: Wie stelle ich eine Verbindung zur API mit Windows-Authentifizierung/NTLM/LDAP her?Wäre Oauth2 eine Option? JMP 15 hat dies im Skriptindex.
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;
Betreff: Wie stelle ich eine Verbindung zur API mit Windows-Authentifizierung/NTLM/LDAP her?Hallo Bryan, vielen Dank für diese Informationen, das ist gut zu wissen!
Gibt es in der JSL-Dokumentation ein Beispiel oder einen Codeausschnitt zur Verwendung der formularbasierten http-Basic-Authentifizierung mit jmp? Das würde ich gerne ausprobieren, bevor ich etwas an der Serversoftware ändere.
Nochmals vielen Dank diz
Betreff: Wie stelle ich eine Verbindung zur API mit Windows-Authentifizierung/NTLM/LDAP her?HTTP-Anfrage führt keine direkte Authentifizierung bei NTLM/LDAP durch.
Sie möchten so etwas wie Passport verwenden http://www.passportjs.org/
in Ihrem Webservice, dann verwenden Sie die formularbasierte Authentifizierung oder die Basisauthentifizierung über https.
-Bryan