mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Ensure compatibility with Fido2 2.x
This commit is contained in:
@@ -6,20 +6,12 @@ from fido2.webauthn import (
|
||||
)
|
||||
from fido2.server import Fido2Server
|
||||
from fido2.utils import websafe_decode, websafe_encode
|
||||
import fido2.features
|
||||
|
||||
from django.utils import timezone
|
||||
|
||||
from modoboa.core.models import User, UserFidoKey
|
||||
|
||||
|
||||
def set_json_mapping():
|
||||
try:
|
||||
fido2.features.webauthn_json_mapping.enabled = True
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
||||
def create_fido2_server(rp_id: str) -> Fido2Server:
|
||||
rp = PublicKeyCredentialRpEntity(name="Modoboa", id=rp_id)
|
||||
return Fido2Server(rp)
|
||||
@@ -33,7 +25,6 @@ def get_creds_from_user(user_id: int) -> dict:
|
||||
|
||||
|
||||
def begin_registration(request):
|
||||
set_json_mapping()
|
||||
server = create_fido2_server(request.localconfig.site.domain)
|
||||
options, state = server.register_begin(
|
||||
PublicKeyCredentialUserEntity(
|
||||
@@ -50,7 +41,6 @@ def begin_registration(request):
|
||||
|
||||
|
||||
def end_registration(request):
|
||||
set_json_mapping()
|
||||
server = create_fido2_server(request.localconfig.site.domain)
|
||||
auth_data = server.register_complete(
|
||||
request.session.pop("fido2_state"), request.data
|
||||
@@ -59,13 +49,11 @@ def end_registration(request):
|
||||
|
||||
|
||||
def begin_authentication(request, user_id: int):
|
||||
set_json_mapping()
|
||||
server = create_fido2_server(request.localconfig.site.domain)
|
||||
return server.authenticate_begin(list(get_creds_from_user(user_id).values()))
|
||||
|
||||
|
||||
def end_authentication(user: User, state: str, data: dict, rp_id: str):
|
||||
set_json_mapping()
|
||||
server = create_fido2_server(rp_id)
|
||||
credentials = get_creds_from_user(user.pk)
|
||||
result = server.authenticate_complete(
|
||||
|
||||
+1
-1
@@ -47,7 +47,7 @@ dependencies = [
|
||||
"asgiref",
|
||||
"dnspython==2.7.0",
|
||||
"feedparser==6.0.11",
|
||||
"fido2==1.2.0",
|
||||
"fido2==2.0.0",
|
||||
"gevent==25.5.1",
|
||||
"progressbar33==2.4",
|
||||
"python-dateutil",
|
||||
|
||||
Reference in New Issue
Block a user