How to automate challenge-response authentication using Java

余生颓废 提交于 2021-02-04 19:35:26

问题


I have Linux phone with enabled SSH. I need to connect to it via challenge-response authentication. So how looks this process manually, for example, using PuTTY:

  1. Connect to phone using IP and port.

  2. Console shows "login as:" -> Enter user name.

  3. Console shows:

    login as: craft

    Challenge: 547-04302
    Product ID: 7000315107

    Response:

  4. I need to copy Challenge, get Response from other server using Challenge and enter the Response in console.

How I can do this using Java and some libraries for SSH (I tried JSch, but there are no methods for challenge-response)? I need only to write Challenge into String, and after that enter the Response using String response.

Thanks for help.


回答1:


The challenge-response authentication is also known as a keyboard-interactive authentication.

And it is supported by the JSch library.

See the official JSch UserAuthKI example.

Basically you need to implement the UIKeyboardInteractive interface (together with the UserInfo interface) and associate the implementation with the session using the Session.setUserInfo.

To use a programmatic response to a single challenge, just collect the challenge from the prompt[0] parameter of the UIKeyboardInteractive.promptKeyboardInteractive method and return a single element array with the response.



来源:https://stackoverflow.com/questions/34329330/how-to-automate-challenge-response-authentication-using-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!