Skip to content

eidorb/openmyid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Open myID

Use myID without a smartphone.

Warning

This project serves an educational purpose: to understand and document the myID Digital ID system. The software is provided "as is" without warranty of any kind, as outlined in the GPL.

Introduction

myID is the Australian Government's Digital ID app, used to access online government services.

Reviews on Apple's App Store and Google Play express the Australian public's opinion of the official myID app:

  • "Always a pain to use but tonight 45 minutes wasted."
  • "Awful, and right before Christmas!"
  • "This app is absolute garbage."
  • "How is this still so bad?"
  • "This app is useless!"
  • "Endless circles."
  • "Impossible."
  • "Terrible."
  • "Trash."
  • "NO"

This project contains

  • myid.py: a Python module implementing myID digital identity utilities and clients used to interact with the myID API
  • openmyid.py: a Textual application which allows use of myID from a command line or web browser

Open myID runs on any computer, allowing you to authenticate to government services if

  • your smartphone is lost or stolen
  • you have a wired internet connection only (no Wi-Fi or cellular)
  • you have issues with the official app

Getting started

Open myID works best if you set up your identity on the official app first:

  • Install myID
  • Create an identity
  • Verify your identity to highest security level required

Run Open myID from the command line, directly from this repository, with uv:

uvx --from git+https://github.com/eidorb/openmyid openmyid

This command installs all required Python dependencies and runs the Open myID application.

Alternatively, start a web server to use Open myID from a browser (instead of the command line):

uvx --from git+https://github.com/eidorb/openmyid textual serve openmyid

Open myID stores your encrypted digital identity in an SQLite database (openmyid.db) beside the application. It is your responsibility to protect the database and use a strong password.

Demo

openmyid-demo-1080.mp4

How it works

The following diagrams depict simplified high-level interactions with the myID system.

sequenceDiagram
    UnauthenticatedClient->>myID:Email verification request
    myID->>UnauthenticatedClient:Proof of identity (POI) identifier
    UnauthenticatedClient->>myID:Verification code
Loading
sequenceDiagram
    AssuranceClient->>AssuranceClient:Generate key pair
    AssuranceClient->>myID:Certificate signing request
    myID->>AssuranceClient:Signed certificate
Loading
sequenceDiagram
    CredentialClient->>myID:Personal details
Loading
sequenceDiagram
    ExtensionClient->>ExtensionClient:Sign JSON Web Token
    ExtensionClient->>myID:OpenID Connect
    myID->>ExtensionClient:Access token
    ExtensionClient->>myID:Poll event queue
    myID->>ExtensionClient:Authentication event
    ExtensionClient->>myID:Approve authentication event
Loading

About

Use myID.gov.au without a smartphone

Topics

Resources

License

Stars

Watchers

Forks

Languages