短編小説:CRaSHシェルのsshコネクタで使用されるユーザー名をカスタマイズされたJavaメソッドに渡すにはどうすればよいですか?SpringブートでCRaSHコマンドを使用してユーザー名を取得する
そんなに話がありません:私はSpring用のカスタムシェルコマンドセットを作成しました。認証は、ユーザ名とパスワードが入力されたsshコネクタを介して行われました(ssh [email protected] -p 2000
のように)。それは春の認証ポリシーに入り、それに応じて合格または拒否されました。
今すぐ承認されてシェルに入ったら、いくつかの機能を実行するためにusenameを取得する必要があります。この場合、私が作成したJavaメソッドにfoobarUsername
を渡す方法を見つける必要があります。@Command
と注釈が付けられ、BaseCommand
で拡張されています。
後のクラッシュのためのGroovyスクリプトによって拡張された私のJava実装、: ssh [email protected] -p 2000
更新:デフォルトでは 、sshのコネクタは、このようなものです
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*/);
}
}
私のシェルコマンドの認証は、Spring自身のAuthenticationManager
によって行われました。 SSH経由でリクエストを送信した時点で、認証は春のセッションにありました。それから、それはシェルに入って、私は自分のコマンドのどれかを試しました。 main()
のブレークポイントをFooCommand
にすることで、以前に送信された認証要求があったはずのコンテキストがなくなったことがわかりました。私のコマンドを入力する前に、認証を受け、処理して返す春のセッションが終了したようです。
おかげで、はMateuszを命じます! –
@JerryYeh将来的にこれを検索する人々のために、この回答を受け入れてください。 – Mateusz
残念ながら、私はもはやそのプロジェクトに取り組んでいないので、もうアクセスできません。 :( –