- 
                Notifications
    You must be signed in to change notification settings 
- Fork 45
feat: webauthn #583
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
          
     Merged
      
      
    
                
     Merged
            
            feat: webauthn #583
Conversation
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
    385d297    to
    76169e2      
    Compare
  
    - Requires changes to make types compatible with older objects
- Uses dataclasses - Makes types compatible with webauthn - Moves `types` module to `types/base.py` - Re-exported from `types.base` to maintain backward compatibility - Updates imports for `types` module - Moves response classes to `types/response.py`
- Uses a common type for all kwargs - Uses specific types for various code paths - Adds additional checks for input types
- Pending: Update utils used in the endpoint
- Removes `dataclasses-json` dep
- Adds AccountInfoInput class - Updates usages in some functions - Implements remaining api implementation functions - Implements EmailDelivery package - Updates API types to work with email delivery functions - Splits WebauthnConfig into normalised and input classes - Adds webauthn utils module
- Moves auth_utils imports out of type_checking block - this is needed at runtime - Adds `__future__` annotations to api functions - Converts config classes to dataclasses - Adds APIOptions model rebuild to webauthn init file
- Exposes a `sync` function to call function synchronously
- Adds missing `rp_id` to `SignInOptionsPOSTResponse` - Updates body parsing for `register_options_api` to handle optional fields - Updates types to match CDI - Adds defaults for literal types with one option - Adds `None` defaults for optional types - Adds serializers for `User` and `RecipeUserId` - Implements remaining functions from Node SDK - Changes `config` input in `RecipeImplementation` to be a property rather than a function - Adds `to_json`/`from_json` calls to (de)serialize various objects for use - Handles `User` and `RecipeUserId` parsing for models manually - Adds missing imports
5778619    to
    d6590e3      
    Compare
  
    
              
                    sattvikc
  
              
              requested changes
              
                  
                    May 23, 2025 
                  
              
              
            
            
- Remove functions from `__init__` that are not exposed in Node - Rename `Api` to `API` (Interface/Implementation) - Move `UserContext` type alias to common types module - Move error map util to common utils module
| 📝 Documentation updates detected! New suggestion: Update WebAuthn/Passkeys documentation for Python SDK support | 
              
                    sattvikc
  
              
              approved these changes
              
                  
                    Jun 11, 2025 
                  
              
              
            
            
- Adds in missing change_email conditional for webauthn
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment
  
      
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
Summary of change
Adds Webauthn (Passkeys) support
/api/webauthn/email/exists- Check if email exists in system/api/webauthn/options/register- Handle registration options/api/webauthn/options/signin- Handle sign-in options/api/webauthn/signin- Handle WebAuthn sign-in/api/webauthn/signup- Handle WebAuthn sign-up/api/user/webauthn/reset- Handle account recovery/api/user/webauthn/reset/token- Generate recovery tokenscredential_idAccountInfotype toAccountInfoInputwith WebAuthn fieldshas_same_webauthn_info_asmethod for credential comparison4.1Breaking Changes
5.2to5.3AccountInfotoAccountInfoInputin various methodscredential_id, while the Webauthn login method contains an array ofcredential_idssupertokens_python.asyncio.list_users_by_account_infosupertokens_python.syncio.list_users_by_account_infosupertokens_python.recipe.accountlinking.interface.RecipeInterface.list_users_by_account_infosupertokens_python.recipe.accountlinking.recipe_implementation.RecipeImplementation.list_users_by_account_infoRelated issues
Test Plan
(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work. Bonus points for screenshots and videos!)
Documentation changes
(If relevant, please create a PR in our docs repo, or create a checklist here highlighting the necessary changes)
Checklist for important updates
coreDriverInterfaceSupported.jsonfile has been updated (if needed)supertokens_python/constants.pyfrontendDriverInterfaceSupported.jsonfile has been updated (if needed)setup.pysupertokens_python/constants.pygit tag) in the formatvX.Y.Z, and then find the latest branch (git branch --all) whoseX.Yis greater than the latest released tag.supertokens_python/utils.pyfile to include that in theFRAMEWORKSvariablesyncio/asynciofunctions are consistent.tests/sessions/test_access_token_version.pyto account for any new claims that are optional or omitted by the coreRemaining TODOs for this PR