Metadata-Version: 2.1
Name: mfa-authenticator
Version: 1.0.4.1
Summary: This helps you setup MFA with 3rd Party Authenticator
Author-email: Sunday Ajayi <sunnexajayi@gmail.com>
Project-URL: homepage, https://your_project_homepage.com
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: python-decouple
Requires-Dist: pyotp
Requires-Dist: qrcode
Requires-Dist: pillow

# MFA SETUP AND VERIFICATION PACKAGE



## This is a python package for MFA setup and verification using 3rd Party Authenticating Applications (like Google Authenticator, Microsoft Authenticator,Sale Force, etc)


### Setup MFA: Onboard on a 3rd Party Authenticator Application:
    1. Generate the MFA URL AND SECRET KEY
    2. Generate the QR Code version of the MFA URL
    3. Integrate with the 3rd party Authenticator :
            a. Scan the QR code generated
            b. Enter the Secret Key



### MFA Verification: 
    -   Insert the code and verify it


#### Sample Code:
    from mfa import MFA


    1. Generate the MFA URL AND SECRET KEY
        m = MFA(service_name, user_details)
            => service_name is the name of the service (eg: company name) : STRING
            => user_detail is the user details (eg: email address, phone number, etc):  STRING
        
        Example: 
            service_name = 'Sunny Inc'
            user_details = 'sunday@test.com'
            m = MFA(service_name, user_details) 
            mfa_url,secret_key = m.generate_mfa_code()
            print(mfa_url)
            print(secret_key)

    2. Generate the QR Code version of the MFA URL
        m.generate_qr_code(mfa_url)   
       
        ##### NOTE: This is optional because the mfa_url should be converted to a qr code on the 
                    client side ( Fromtend application : Web or Mobile App)
      


    3. Verify the Generated Code
        generated_code = '123456' # generated by the user via the 3rd party authenticator app (Google Authenticator, Microsoft Authenticator, etc)
        
        status = m.verify_code(generated_code)
        print(status)




### NOTE: 

    1 -> Developer will be expected to save the secret Key for each user 
        (it should be unique for each user)
            
    2 -> End User should be asked to save the secret key or I will suggest 
        you save it in a db with a key value pair or a field where the key 
        is the recovery code (unique) and value is the secret key. So you share 
        the recovery code with the user

    3 -> When they can't recover the qr or lost the mobile device, 
        you can ask them for the recovery code then use it to get the secret key 
        from the db and then use it to setup on the 3rd party authenticator app.






