Kurzgeschichte: Wie kann ich den Benutzernamen, der in SSH-Connector der CRaSH-Shell verwendet wird, an die angepasste Java-Methode übergeben?Get username using CRaSH befehl in Spring boot
Nicht so kurze Geschichte: Ich habe eine Reihe von benutzerdefinierten Shell-Befehle für Spring erstellt. Die Authentifizierung erfolgte über den SSH-Connector, in dem ein Benutzername und ein Passwort eingegeben wurden, wie dieser ssh [email protected] -p 2000
. Es ging im Frühjahr in die Authentifizierungsrichtlinie und wurde entsprechend übergeben oder abgelehnt.
Nun nachdem ich autorisiert und in die Shell gekommen bin, muss ich den Benutzernamen abrufen, um einige Funktionen auszuführen. In diesem Fall muss ich herausfinden, wie man foobarUsername
in die von mir erstellten Java-Methoden übergibt, die mit @Command
annotiert und um BaseCommand
erweitert werden.
Meine Java-Implementierung, die später von einem groovigen Skript für CRASH erweitert:
public class FooCommand extends BaseCommand {
@Command
public void main(@Usage("do something")
@Required @Option(names = {"o", "option"}) String option) {
doSomething(option, username/* the username in ssh request*/);
}
}
Der ssh-Anschluss ist wie folgt: ssh [email protected] -p 2000
Update: standardmäßig die Die Authentifizierung meines Shell-Befehls wurde von Spring AuthenticationManager
durchgeführt. Zu der Zeit, als ich eine Anfrage per SSH gesendet habe, war die Authentifizierung in der Spring Session. Dann kam es in die Shell und ich probierte irgendeinen meiner Befehle aus. Indem ich einen Haltepunkt in main()
von FooCommand
setzte, fand ich, dass der Kontext weg war, der die Authentifizierungsanforderung hätte haben sollen, die vorher gesendet worden war. Anscheinend wurde die Spring-Sitzung des Empfangens, Verarbeitens und Zurückgebens der Authentifizierung beendet, bevor ich meinen Befehl eintrage.
Danke, Mateusz Befehl! –
@JerryYeh Wenn es für dich funktioniert, akzeptiere bitte diese Antwort für Leute, die das in Zukunft suchen werden – Mateusz
Leider arbeite ich nicht mehr an diesem Projekt, habe also keinen Zugriff mehr darauf. :( –