Esempio n. 1
0
def user_mfa_options(selected_mfa_option, headers, mfa_challenge_url, payload,
                     primary_auth):
    """Handle user mfa options.

    :param selected_mfa_option: Selected MFA option (SMS, push, etc)
    :param headers: headers
    :param mfa_challenge_url: MFA challenge URL
    :param payload: payload
    :param primary_auth: Primary authentication method
    :return: payload data

    """
    logging.debug("Handle user MFA options")

    logging.debug("User MFA options selected: [{}]".format(
        selected_mfa_option["factorType"]))
    if selected_mfa_option["factorType"] == "push":
        return push_approval(headers, mfa_challenge_url, payload)

    if settings.mfa_response is None:
        logging.debug("Getting verification code from user.")
        print("Type verification code and press Enter")
        settings.mfa_response = helpers.get_input()

    # time to verify the mfa method
    payload = helpers.prepare_payload(stateToken=primary_auth["stateToken"],
                                      passCode=settings.mfa_response)
    mfa_verify = okta_verify_api_method(mfa_challenge_url, payload, headers)
    logging.debug("mfa_verify [{}]".format(json.dumps(mfa_verify)))

    return mfa_verify
Esempio n. 2
0
def set_passcode(mfa_option):
    """Set totp passcode.

    If the user has selected the passcode option, collect their TOTP.

    :param mfa_option: selected factor
    :return passcode: passcode value from user
    """
    passcode = None
    if mfa_option["factor"].lower() == "passcode":
        print("Type your TOTP and press Enter")
        passcode = helpers.get_input()
    return passcode
Esempio n. 3
0
def test_get_input(monkeypatch):
    """Check if provided input is return unmodified."""
    from tokendito import helpers

    monkeypatch.setattr("tokendito.helpers.input", lambda _: "pytest_patched")
    assert helpers.get_input() == "pytest_patched"