[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Oct 2008
    Beiträge
    4

    Question User ändern mit Hilfe von System-API

    Hallo Leute!

    Ich habe in meinen Programm einen CL Aufruf drin:

    CALLB 'OWUSER400C'
    PARM USER
    PARM PWD
    PARM PRFHNDL1
    PARM PRFHNDL2
    PARM wkSTEUERC

    Dort gebe ich den User und das Passwort mit von dem User, desen Identität ich gerne möchte.

    Das aufrufende CL-Programm habe ich hier im Forum gefunden und etwas angepasst, es sieht nun so aus:

    PGM (&USERID &PWD &PRFHNDL1 &PRFHNDL2 &STEUERC)

    DCL VAR(&STEUERC) TYPE(*CHAR) LEN(02)
    DCL VAR(&USERID) TYPE(*CHAR) LEN(10)
    DCL VAR(&PWD) TYPE(*CHAR) LEN(10)
    DCL VAR(&PWDLEN) TYPE(*CHAR) LEN(4) +
    VALUE( X'00000010')
    DCL VAR(&PWDCCSID) TYPE(*CHAR) LEN(4) +
    VALUE( X'FFFFFFFF')
    DCL VAR(&ERRCODE) TYPE(*CHAR) LEN(8) +
    VALUE( X'0000000000000000')
    DCL VAR(&CURPWD) TYPE(*CHAR) LEN(10) +
    VALUE(' ')
    DCL VAR(&OPERATION) TYPE(*CHAR) LEN(4) +
    VALUE( X'00000001')
    DCL VAR(&ERROR) TYPE(*CHAR) LEN(315) +
    VALUE(' ')
    DCL VAR(&PRFHNDL1) TYPE(*CHAR) LEN(12)
    DCL VAR(&PRFHNDL2) TYPE(*CHAR) LEN(12)
    IF COND(&STEUERC *EQ '01') THEN(DO)
    CALL PGM(QSYGETPH) PARM('*CURRENT ' +
    &CURPWD &PRFHNDL1)

    CALL PGM(QSYGETPH) PARM(&USERID &PWD &PRFHNDL2 +
    &ERRCODE &PWDLEN &PWDCCSID)
    CALL PGM(QWTSETP) PARM(&PRFHNDL2)

    CALL PGM(QWTSJUID) PARM(&OPERATION &ERROR)
    ENDDO

    IF COND(&STEUERC *EQ '02') THEN(DO)
    CALL PGM(QWTSETP) PARM(&PRFHNDL1)
    CALL PGM(QSYRLSPH) PARM(&PRFHNDL1)
    CALL PGM(QSYRLSPH) PARM(&PRFHNDL2)
    ENDDO
    ENDPGM

    Nur nach dem CL-Aufruf ist der User nicht verändert wenn er in das Programm zurückkehrt, welches das CL aufruft.

    Hat einer von euch eine Ahnung wieso?

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Nach setzen des Profils läuft der Job unter der Berechtigung des neuen Profils.
    Der Jobname ändert sich dadurch nicht.
    Du kannst also nicht direkt abfragen, unter welchem User der Job läuft (also Jobattribut).

    Hier hilft nur ggf. ein SQL mit der Abfrage auf Current User.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Oct 2008
    Beiträge
    4
    Danke schonmal für deine Hilfe!

    Kannst du mir vielleicht noch mit dem SQL ein wenig weiterhelfen?
    Welche Datei muss ich abfragen, bzw. wo ist der Current User zu finden?

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    "Current User" ist eine Systemvariable und kann einfach per

    D MyUser S 10
    exec sql set : MyUser = Current User;

    abgefragt werden.

    Allerdings müsstest du den aktuellen User doch kennen, da du das Profil doch verwendest.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Oct 2008
    Beiträge
    4
    Also ich schildere mal genau mein Problem von vorne:

    Wir führen in unserer Firma den Webservice ein, dort gibts allerdings nur einen User, den Standarduser.

    Nun soll aber jeder User Änderungen durchführen können, aber nicht unter dem Standarduser sondern mit seinen normalen regulären iSeries User!
    Dazu sollte er sein Passwort und Userkennung eingeben und wir wollen das Standard(web)user - Profil mit dem anderen "tauschen" um eine eindeutige Identifikation durchzuführen!

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Ob das der richtige Weg ist ?
    Immerhin wüden dann User und Kennwort ja im Klartext übers Netz gehen.
    Je nach Anzahl der erwarteten User benötigst du ja auch eine Vielzahl von Profilen.

    Wenn du allerdings die DB connectest bevor du das Profil änderst, erhältst du immer den verbundenen User.

    Was verstehst du unter WebService ?
    Eine HTTP-Anwendung, 5250-Webfacing o.ä. ?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Oct 2008
    Beiträge
    4
    Unter WebService verstehe ich folgendes:

    IBM Web Administration for i5/OS

    Wir erstellen eine Java-Software in dem verschiedene Änderungen, die bisher nur am Grünschirm möglich waren, nun auch über eine Web-Oberfläche möglich sind.

    Alle User gibt es bereits auf der iSeries, es kommen keine zusätzlichen dazu.

    Das Problem ist nur, dass man sich als Standard-User im WebService, sprich der Java Oberfläche anmeldet und dann gewisse Daten (z.B. eine Adresse) ändert, zu Dokumentationszwecken muss hier aber unbedingt das richtige Userprofil abgefragt werden. Dazu wollen wir halt das neben den zu ändernden Daten (z.B. Adresse) auch die iSeries User-ID und das dazugehörige Passwort eingeben wird.

    Danach wird via RPG geprüft (Java übergibt alle Daten an das RPG-Programm) ob die Daten korrekt, bzw. der User das richtige Passwort mitgegeben hat.

    Das ist nötig, weil alle Programme (in unseren Fall das Adressdatenprogramm) bereits im RPG vorliegen und bisher ja immer via Grünschirm geändert worden, dort wurde der aktuelle User ja ohne Probleme mitdokumentiert.

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    QWTSETP switched nur die Jobberechtigung und den SQL Benutzer um, mit rtvjoba und Konsorten bekommst du immer noch den vorherigen Benutzer angezeigt. SQL kennt im register current_user den gesetzten und in der Programmstatus Datenstruktur sollte der ebenfalls drinsein (nicht der bei der Jobnummer!!!)

    D*B

    PS:
    falls deine WebServices allerdings wirklich WebServices sind, dann sollte man schon nochmal genauer draufsehen, ob man sich da von der Berechtigungsseite Löcher reinreißt.

    Zitat Zitat von Bonkel Beitrag anzeigen
    Unter WebService verstehe ich folgendes:

    IBM Web Administration for i5/OS

    Wir erstellen eine Java-Software in dem verschiedene Änderungen, die bisher nur am Grünschirm möglich waren, nun auch über eine Web-Oberfläche möglich sind.

    Alle User gibt es bereits auf der iSeries, es kommen keine zusätzlichen dazu.

    Das Problem ist nur, dass man sich als Standard-User im WebService, sprich der Java Oberfläche anmeldet und dann gewisse Daten (z.B. eine Adresse) ändert, zu Dokumentationszwecken muss hier aber unbedingt das richtige Userprofil abgefragt werden. Dazu wollen wir halt das neben den zu ändernden Daten (z.B. Adresse) auch die iSeries User-ID und das dazugehörige Passwort eingeben wird.

    Danach wird via RPG geprüft (Java übergibt alle Daten an das RPG-Programm) ob die Daten korrekt, bzw. der User das richtige Passwort mitgegeben hat.

    Das ist nötig, weil alle Programme (in unseren Fall das Adressdatenprogramm) bereits im RPG vorliegen und bisher ja immer via Grünschirm geändert worden, dort wurde der aktuelle User ja ohne Probleme mitdokumentiert.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Tools von IST – Integrierte System Technik
    By Kirsten Steer in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 11-12-06, 09:03
  2. Hilfe! Rollback bei Transaktionen funktioniert nicht
    By remo2010 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 23-11-06, 13:31
  3. Antworten: 0
    Letzter Beitrag: 07-11-06, 08:30
  4. Hilfe bei Lodrun Anleitung
    By marcel331 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 12-08-06, 13:01
  5. Suche was wie chkjob
    By miro in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 02-02-05, 13:47

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •