Explain that first factor and other forms of second factor authentication is up to the developer as to how they want to implement it.
SurePassIdU2fSign
SurePassIdU2fSign
public class DemoSignInActivity extends Activity implements SurePassIdU2fSign.Listener { private SurePassIdU2fSign mU2fSign; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initUi(); mU2fSign = new SurePassIdU2fSign(this, this); } void afterLoginSuccess(String username) { // Avter the user mU2fSign.u2fSign("https://u2f.server.com/example", username); } @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { mU2fSign.onActivityResult(requestCode, resultCode, intent); } /** * Method used to go to the target activity after U2F Sign succeeds. */ @Override public void gotoTargetActivity() { Intent intent = new Intent(this, DemoAppActivity.class); startActivity(intent); } /** * Method used to go to an activity that provides the user the ability * to use a different second factor method if they are unable to use * a U2F Authenticator. */ @Override public void gotoAlternateVerificationActivity() { Intent intent = new Intent(this, DemoEnterOtpActivity.class); startActivity(intent); } /** * Called if the U2F Sign operation was canceled by the user. */ @Override public void u2fSignCanceled() { resetFormValues(); enableForm(); displayMessage("Sign In canceled."); } /** * Called if there was an error during the U2F Sign Operation. * * @param errorMessage The error that occurred. */ @Override public void u2fSignError(CharSequence errorMessage) { displayMessage(errorMessage); enableForm(); } }
Upon successfully authenticating the user it should call
protected void u2fSign(String username)
That method will perform all the necessary U2F operations.