簡體   English   中英

無法使用 javascript 和 python API 注冊 U2F 密鑰

[英]Cannot register a U2F key with javascript & python APIs

我正在嘗試在我的 django 應用程序中實現 U2F 身份驗證設備。 現在的主要問題是,我所有的前端注冊調用都失敗了。

我正在使用u2f-api.js腳本和python-u2flib-server python 腳本來實現這一點。

我遵循這種模式:

1) 使用 u2flib 生成密鑰/挑戰

from u2flib_server import u2f
app_id = 'https://127.0.0.1'
reg = u2f.begin_registration(app_id)
print reg 
# {'registeredKeys': [], 
   'registerRequests': [{'challenge': u'pLzGmABMwBzQkco6INeFNuPsAG6KhgfVeYFeV0QBf1g', version': 'U2F_V2'}], 
   'appId': 'https://127.0.0.1'}

2) 從瀏覽器注冊密鑰

var reg_data = {'registeredKeys': [], 'registerRequests': [{'challenge': 'pLzGmABMwBzQkco6INeFNuPsAG6KhgfVeYFeV0QBf1g', 'version': 'U2F_V2'}], 'appId': 'https://127.0.0.1'}

u2f.register(reg_data['appId'], reg_data['registerRequests'], [], function(resp) { console.log(resp) });

這始終返回一個{errorCode: 2}響應,這實質上意味着錯誤的請求。 但是,我無法確定此請求的哪一部分無效。

我正在使用runserver_plus --cert certname來運行我的本地網絡服務器,因此該站點通過 HTTPS 提供服務。 我還嘗試使用 NGROK 通過 HTTPS 訪問我的網站並嘗試使用相同的代碼。 我始終得到相同的回應。

我將不勝感激任何有關我的實現的幫助、指針或指導,因為我已經掙扎了幾天,並且圍繞 U2F 庫和實現的現有文檔非常薄。

- 更新 -

我實際上在這里取得了一些進展。 我能夠收到生成密鑰響應。 但是,我仍然無法在 python 庫中注冊這個密鑰。

我最終在服務器端有這樣的事情:

response = {'challenge': 'okGbjnbE2V9cT42X2wm-PA9pm7k3KpTETVEv2SqEUxE', 'registrationData': 'BRS5y7dFXs0O60o2cUFc-SZtKG3jibpFQGuwQDyTQkSWeQUNWn\\u2026bEwIhALYcM1NospvymAbv83lTlpLjaa2ICSFQv-5RYfzkPCc9', 'version': 'U2F_V2', 'clientData': 'eyJjaGFsbGVuZ2UiOiJva0dianBnRTJWOWNUNDJYMndtLVBBOX\\u2026R5cCI6Im5hdmlnYXRvci5pZC5maW5pc2hFbnJvbGxtZW50In0'}

register_request = {'registeredKeys': [], 'registerRequests': [{'challenge': 'okGbjpgE2V9cD32X2wm-PA9pm7k3KpKN5VEv2SqEUxE', 'version': 'U2F_V2'}], 'appId': 'https://127.0.0.1:8000'}

u2f.complete_registration(register_request, response)

但是,這會導致以下錯誤:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/u2flib_server/u2f.py", line 45, in complete_registration
    return U2fRegisterRequest.wrap(request).complete(response, valid_facets)
  File "/usr/local/lib/python2.7/dist-packages/u2flib_server/model.py", line 419, in complete
    _validate_client_data(resp.clientData, req.challenge, Type.REGISTER,
  File "/usr/local/lib/python2.7/dist-packages/u2flib_server/model.py", line 339, in clientData
    return ClientData.wrap(self['clientData'])
  File "/usr/local/lib/python2.7/dist-packages/u2flib_server/model.py", line 261, in wrap
    return data if isinstance(data, cls) else cls(data)
  File "/usr/local/lib/python2.7/dist-packages/u2flib_server/model.py", line 328, in __init__
    super(ClientData, self).__init__(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/u2flib_server/model.py", line 239, in __init__
    kwargs = json.loads(arg.decode('utf-8'))
  File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

我又卡住了! 在將它們傳遞給u2f.register之前,我嘗試從這些值中創建一個 json 轉儲,但u2f.register - 我得到了完全相同的錯誤。

我正在嘗試在我的 django 應用程序中實現 U2F 身份驗證設備。 現在的主要問題是,我所有的前端注冊調用都失敗了。

我正在使用u2f-api.js腳本和python-u2flib-server python 腳本來實現這一點。

我遵循這種模式:

1) 使用 u2flib 生成密鑰/挑戰

from u2flib_server import u2f
app_id = 'https://127.0.0.1'
reg = u2f.begin_registration(app_id)
print reg 
# {'registeredKeys': [], 
   'registerRequests': [{'challenge': u'pLzGmABMwBzQkco6INeFNuPsAG6KhgfVeYFeV0QBf1g', version': 'U2F_V2'}], 
   'appId': 'https://127.0.0.1'}

2) 從瀏覽器注冊密鑰

var reg_data = {'registeredKeys': [], 'registerRequests': [{'challenge': 'pLzGmABMwBzQkco6INeFNuPsAG6KhgfVeYFeV0QBf1g', 'version': 'U2F_V2'}], 'appId': 'https://127.0.0.1'}

u2f.register(reg_data['appId'], reg_data['registerRequests'], [], function(resp) { console.log(resp) });

這始終返回一個{errorCode: 2}響應,這實質上意味着錯誤的請求。 但是,我無法確定此請求的哪一部分無效。

我正在使用runserver_plus --cert certname來運行我的本地網絡服務器,因此該站點通過 HTTPS 提供服務。 我還嘗試使用 NGROK 通過 HTTPS 訪問我的網站並嘗試使用相同的代碼。 我始終得到相同的回應。

我將不勝感激任何有關我的實現的幫助、指針或指導,因為我已經掙扎了幾天,並且圍繞 U2F 庫和實現的現有文檔非常薄。

- 更新 -

我實際上在這里取得了一些進展。 我能夠收到生成密鑰響應。 但是,我仍然無法在 python 庫中注冊這個密鑰。

我最終在服務器端有這樣的事情:

response = {'challenge': 'okGbjnbE2V9cT42X2wm-PA9pm7k3KpTETVEv2SqEUxE', 'registrationData': 'BRS5y7dFXs0O60o2cUFc-SZtKG3jibpFQGuwQDyTQkSWeQUNWn\\u2026bEwIhALYcM1NospvymAbv83lTlpLjaa2ICSFQv-5RYfzkPCc9', 'version': 'U2F_V2', 'clientData': 'eyJjaGFsbGVuZ2UiOiJva0dianBnRTJWOWNUNDJYMndtLVBBOX\\u2026R5cCI6Im5hdmlnYXRvci5pZC5maW5pc2hFbnJvbGxtZW50In0'}

register_request = {'registeredKeys': [], 'registerRequests': [{'challenge': 'okGbjpgE2V9cD32X2wm-PA9pm7k3KpKN5VEv2SqEUxE', 'version': 'U2F_V2'}], 'appId': 'https://127.0.0.1:8000'}

u2f.complete_registration(register_request, response)

但是,這會導致以下錯誤:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/u2flib_server/u2f.py", line 45, in complete_registration
    return U2fRegisterRequest.wrap(request).complete(response, valid_facets)
  File "/usr/local/lib/python2.7/dist-packages/u2flib_server/model.py", line 419, in complete
    _validate_client_data(resp.clientData, req.challenge, Type.REGISTER,
  File "/usr/local/lib/python2.7/dist-packages/u2flib_server/model.py", line 339, in clientData
    return ClientData.wrap(self['clientData'])
  File "/usr/local/lib/python2.7/dist-packages/u2flib_server/model.py", line 261, in wrap
    return data if isinstance(data, cls) else cls(data)
  File "/usr/local/lib/python2.7/dist-packages/u2flib_server/model.py", line 328, in __init__
    super(ClientData, self).__init__(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/u2flib_server/model.py", line 239, in __init__
    kwargs = json.loads(arg.decode('utf-8'))
  File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

我又卡住了! 在將它們傳遞給u2f.register之前,我嘗試從這些值中創建一個 json 轉儲,但u2f.register - 我得到了完全相同的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM