SAP ABAP REST: Login Data aus SM59 verwenden

Getting started ... Alles für einen gelungenen Start.
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

SAP ABAP REST: Login Data aus SM59 verwenden

Beitrag von sap_koun (ForumUser / 29 / 24 / 0 ) »
Hi,
ich habe ein Z-Programm geschrieben, welches verschiedene URL-Endpoints aufruft (GET & POST-Requests) macht an ein externes System.

Username und Passwort war bisher im Klartext im Code gespeichert. Das ist unsicher, daher will ich nun einen anderen Weg gehen.

Diese Logindaten sind in der SM59 hinterlegt und mittels "create_by_destination" kann ich auch Host/Port/Präfix. hinterlegen.

Aber mir gelingt es nicht, die hinterlegten Logindaten zu nutzen.
Hat jemand eine Idee, wie man die Daten verwenden kann?
Gibt es weitere Möglichkeiten, es sicherer zu machen? (Mir fällt z.B. ein, dass man die Rechte auf der Seite des externen Systems für den User einschränken könnte, oder die Login-Seite komplett "disabled").


Hier der Code zum ausprobieren:

Code: Alles auswählen.

DATA: o_client          TYPE REF TO if_http_client,
      lv_http_status    TYPE i,
      lv_status_text    TYPE string,
      response_content  TYPE string,
      lv_uri            TYPE string.

TRY.

    " Create HTTP client based on destination
    CALL METHOD cl_http_client=>create_by_destination
      EXPORTING
        destination = 'TEST_DESTINATION'
      IMPORTING
        client      = o_client
      EXCEPTIONS
        argument_not_found = 1
        plugin_not_active  = 2
        internal_error     = 3
        others             = 4.

    IF sy-subrc <> 0.
      o_client->close( ).
      RETURN. " Exit if there's an error
    ENDIF.

    " Setting specific path or adding parameters to the URL
    lv_uri = '/this/could/be/your/endpoint'.
    o_client->propertytype_logon_popup = abap_false.
    o_client->request->set_header_field( name = '~request_uri' value = lv_uri ).

    " Make a GET request
    o_client->request->set_method( if_http_request=>co_request_method_get ).
    o_client->send( timeout = if_http_client=>co_timeout_default ).
    o_client->receive( ).

    " Get the HTTP status and response content
    o_client->response->get_status( IMPORTING
                                      code   = lv_http_status
                                      reason = lv_status_text ).

    response_content = o_client->response->get_cdata( ).

    " Displaying the response code and content for debugging
    WRITE: / 'HTTP Status:', lv_http_status.
    WRITE: / 'Response:', response_content.

CATCH cx_root INTO DATA(lx_error).
    " Handle exception
    WRITE: / lx_error->get_text( ).
ENDTRY. 

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: SAP ABAP REST: Login Data aus SM59 verwenden

Beitrag von a-dead-trousers (Top Expert / 4308 / 214 / 1149 ) »
Das ist ja geanu die Sache, warum die SAP Passwörter im SecStore ablegt:
Damit eben nicht jeder darauf zugreifen kann.

Grundsätzlich sind nur bestimmte SAP Programme per Name erlaubt dort überhaupt Daten abzulegen. Deswegen lässt sich das auch nicht (so ohne weiteres) für Kundenimplementierungen nutzen. Die Daten selbst werden verschlüsselt abgelegt und zusätzlich noch mit eigenen Zugriffberechtigungen versehen. Da könnte z.B. ein Programm A einem anderen Prgramm B erlauben auf abgelegte Passwörter von A (lesend) zuzugreifen. Das passiert auch für einige Programme (z.B. Testreports SECSTORE01 und SECSTORE02 die sich gegenseitig berechtigen). Das heißt also, um Passwörter in Kundenprogrammen abfragen zu können, muss entweder das Programm, welches das Passwort abgelegt hat, eine derartige Funktion anbieten oder man "erschleicht" sich diese Möglichkeit 😱

Zumindest für die Logischen Ports von Webservices hätte ich eine "Umgehungslösung" anzubieten, die eine interne Schnittstelle "ausnutzt". Bei RFC Destination kann ich jetzt auf die schnelle leider nichts finden.

Dreh und Angelpunkt für RFC wären die Klasse CL_DEST_UTILITY_PWD und die Funktionsgruppe CRFC. Auch diese beiden sind so konfiguriert, dass sie sich gegenseitig berechtigen (siehe Methode CL_DEST_UTILITY_PWD=>INIT_ACL_TABLE). Leider finde den Aufruf von SECSTORE_READ_ITEM, der für das Auslesen benötigt wird, weder in CL_DEST_UTILITY_PWD noch in CRFC. Somit schaut es nicht so aus als ob man da was "ausnutzen" könnte.

IMHO bleibt dir nur die Möglichkeit das Passwort selbst zu verschlüsseln und dann in einer eigenen Tabelle abzulegen.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: SAP ABAP REST: Login Data aus SM59 verwenden

Beitrag von a-dead-trousers (Top Expert / 4308 / 214 / 1149 ) »
Ich hab mir die CL_HTTP_CLIENT mal genauer angeschaut:
In der Methode AUTHENTICATION wird der Fall für ein verschlüsselt abgelegtes Passwort ziemlich anschaulich durchexerziert. Sofern das in deinem Fall (ext. HTTP-Verbindung) nicht durchlaufen wird, solltest du dir dieses Coding zu nutze machen können.

Das Feld "sap-icf-authorization" im Header ist mit |{ Username }:/RFC/{ RFC_Destination }| zu versorgen und dann müsste es klappen.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
sap_koun

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: SAP ABAP REST: Login Data aus SM59 verwenden

Beitrag von sap_koun (ForumUser / 29 / 24 / 0 ) »
Hi a-dead-trousers,

vielen Dank für deine Antwort. Mir ist es gelungen die in der SM59 hinterlegten Daten zu verwenden...

Ich werde deinen Vorschlag weiter inspizieren, ausprobieren und schauen was der SecStore von SAP so hergibt.

Danke.

Grüße

Re: SAP ABAP REST: Login Data aus SM59 verwenden

Beitrag von ewx (Top Expert / 4794 / 295 / 630 ) »
sap_koun hat geschrieben:
10.08.2023 16:40
Mir ist es gelungen die in der SM59 hinterlegten Daten zu verwenden...
Wie hast du das gemacht?

Re: SAP ABAP REST: Login Data aus SM59 verwenden

Beitrag von a-dead-trousers (Top Expert / 4308 / 214 / 1149 ) »
Ich vermute er verwendet "sap-icf-authorization".
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: SAP ABAP REST: Login Data aus SM59 verwenden

Beitrag von IHe (Specialist / 143 / 35 / 45 ) »
Vielleicht ist das Thema auch zu kompliziert angegangen worden. Wenn ich zu einem Webservice eine RFC-Destination vom Typ G (HTTP-Verbindung zu externen Servern) anlege und dort User/Passwort hinterlege, dann muss der Webservice nur Basic Authentification unterstützen - das ist ja keine SAP-Erfindung, sondern HTTP-Standard. Wenn dem so ist muss überhaupt nichts extra programmiert werden und die Anmeldung funktioniert anhand der in der RFC-Destination hinterlegten Daten automatisch.

Folgende Benutzer bedankten sich beim Autor IHe für den Beitrag:
a-dead-trousers

Ingo Hoffmann

ECC|S/4HANA|BTP
dbh SAP Solutions

Seite 1 von 1

Vergleichbare Themen

3
Antw.
554
Views
SAP ABAP Rest aufruf: http communication failure?
von sap_koun » 29.12.2022 01:03 • Verfasst in ABAP® für Anfänger
0
Antw.
7215
Views
Serialization of ABAP Data in XML
von Heinz » 19.10.2004 10:38 • Verfasst in Tutorials & Cookbooks
3
Antw.
2760
Views
multipart/form-data aus Abap versenden
von abap_magnet » 26.08.2009 17:08 • Verfasst in ABAP® für Anfänger
4
Antw.
2480
Views
Icons in ABAP hochladen und verwenden
von Zubasa » 03.06.2011 21:58 • Verfasst in ABAP® für Anfänger
5
Antw.
587
Views
IDOC Verbindung SM59
von L0w-RiDer » 18.05.2021 10:01 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag



Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Wie standardtabelle Updaten?
vor 3 Tagen von A6272 6 / 369
Neue Themen als SAP Entwickler
vor 3 Tagen von IHe 7 / 545
Problem mit Custom-Dynpro in VL02N
vor 3 Tagen von Xilukarim gelöst 2 / 68

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Wie standardtabelle Updaten?
vor 3 Tagen von A6272 6 / 369
Neue Themen als SAP Entwickler
vor 3 Tagen von IHe 7 / 545
Problem mit Custom-Dynpro in VL02N
vor 3 Tagen von Xilukarim gelöst 2 / 68