{"id":19607204,"url":"https://github.com/robocorp/example-mfa-otp","last_synced_at":"2026-03-02T16:33:24.397Z","repository":{"id":59321563,"uuid":"535612487","full_name":"robocorp/example-mfa-otp","owner":"robocorp","description":"Example of using Multi Factor Authentication with One Time Password","archived":false,"fork":false,"pushed_at":"2023-01-27T06:10:32.000Z","size":4877,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-01-09T09:26:56.187Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"RobotFramework","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robocorp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-09-12T10:19:53.000Z","updated_at":"2023-02-14T11:38:57.000Z","dependencies_parsed_at":"2023-02-15T06:16:07.740Z","dependency_job_id":null,"html_url":"https://github.com/robocorp/example-mfa-otp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robocorp%2Fexample-mfa-otp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robocorp%2Fexample-mfa-otp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robocorp%2Fexample-mfa-otp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robocorp%2Fexample-mfa-otp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robocorp","download_url":"https://codeload.github.com/robocorp/example-mfa-otp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240895187,"owners_count":19874945,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T10:09:15.523Z","updated_at":"2026-03-02T16:33:19.361Z","avatar_url":"https://github.com/robocorp.png","language":"RobotFramework","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Automating Multi-Factor Authentication (MFA)\n\nWith the `RPA.MFA` wrapping [pyotp](https://pypi.org/project/pyotp/) library, you can generate one-time passwords to sign in to services and sites that enforce multi-factor authentication.\n\nThe common setup flow is as follows:\n\n1. Login into the web platform as usual, then go to security settings and register a new authenticator app (as you normally do with Google Authenticator or Authy).\n1. Proceed throughout the instructions and choose \"different auth app\" if such an option is available.\n1. You'll get to a QR code that contains a secret key. \n1. Store the secret securely in the Robocorp Control Room Vault.\n1. Scanning the QR code with your mobile app will enable you to finish the registration process quickly.\n1. Finish registration by entering the 6-digit code obtained with your smartphone or the `Get Time/Counter Based Otp` keyword.\n\nNow you should be able to authenticate with your usual credentials and the immediately requested OTP without any manual intervention, fully automated!\n\n## Examples\n\n### Microsoft\n\nhttps://mysignins.microsoft.com/security-info\n\n1. Add a sign-in method ![Add sign-in method](https://github.com/robocorp/example-mfa-otp/raw/master/devdata/screens/ms1.png)\n1. Authenticator app ![Authenticator app](https://github.com/robocorp/example-mfa-otp/raw/master/devdata/screens/ms2.png)\n1. QR code and secret ![QR code and secret](https://github.com/robocorp/example-mfa-otp/raw/master/devdata/screens/ms3.png)\n1. Code confirmation ![Code confirmation](https://github.com/robocorp/example-mfa-otp/raw/master/devdata/screens/ms4.png)\n\n### GitHub\n\nhttps://github.com/settings/security\n\n1. Configure authenticator app ![Configure authenticator app](https://github.com/robocorp/example-mfa-otp/raw/master/devdata/screens/gh1.png)\n1. App setup ![App setup](https://github.com/robocorp/example-mfa-otp/raw/master/devdata/screens/gh2.png)\n1. QR code and secret ![QR code and secret](https://github.com/robocorp/example-mfa-otp/raw/master/devdata/screens/gh3.png)\n\n### Google\n\nhttps://myaccount.google.com/security\n\n1. 2-Step Verification ![2-Step Verification](https://github.com/robocorp/example-mfa-otp/raw/master/devdata/screens/go1.png)\n1. Authenticator app ![Authenticator app](https://github.com/robocorp/example-mfa-otp/raw/master/devdata/screens/go2.png)\n1. Change authenticator ![Change authenticator](https://github.com/robocorp/example-mfa-otp/raw/master/devdata/screens/go3.png)\n1. QR code ![QR code](https://github.com/robocorp/example-mfa-otp/raw/master/devdata/screens/go4.png)\n1. QR secret ![QR code and secret](https://github.com/robocorp/example-mfa-otp/raw/master/devdata/screens/go5.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobocorp%2Fexample-mfa-otp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobocorp%2Fexample-mfa-otp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobocorp%2Fexample-mfa-otp/lists"}