FIDO-U2F絡みのメモ2
_muili.
二段階認証セキュリティキー(U2F)対応の認証ページを作るための私的メモ。Pythonならお手軽スタンドアローンU2Fサーバになる。と思いきや色々入れるハメに。
環境
- FIDO U2F Security Key
  
- API
- https://github.com/Yubico/python-u2flib-server
- サーバ
- windows7+cygwin/pyhton2.7
- クライアント
- chrome51
導入
- API先の情報のまま
- 
$ git clone https://github.com/Yubico/python-u2flib-server.git $ cd python-u2flib-server $ git submodule init $ git submodule update $ python setup.py sdist $ python examples/u2f_server.py うまく行けばスタンドアロンでU2Fサーバになる。 [20/Jun/2016 13:31:44] Starting server on http://localhost:8081 
- ImportError: .. cryptography
- $ pip install cryptography
- 問題が起きた例
- UnicodeDecodeError: 'ascii' codec can't decode ..
- 
$ vim /usr/lib/python2.7/site-packages/sitecustomize.py ## 設定を追記 import sys sys.setdefaultencoding('utf-8')
- .. ffi.h: No such file ..
- apt-cyg install libffi-devel 
- .. openssl/opensslv.h: No such file ..
- apt-cyg install openssl-devel 
 
- Successfully installed cryptography idna pyasn1 enum34 ipaddress cffi pycparser
- 問題が起きた例
- ImportError: .. webob.dec
- $ pip install webob
- Successfully installed webob
流れ
APIの説明のように、ざっくり以下のような流れ。
メモ1のPHP-APIにあるu2f-api.jsを使ってWebデモを作った方が確かに楽そうだ。
- Registration
- 
- GET /enroll
- 
{ "authenticateRequests": [], "registerRequests": [ { "challenge": "9s80ruHc", "version": "U2F_V2", "appId": "http://localhost:8081" } ]
- POST /bind
- 
data={"clientData":"eyJvcmln"}
 
- Authentication
- 
- GET /sign
- 
{ "authenticateRequests": [ { "challenge": "EHuxwx0A", "version": "U2F_V2", "keyHandle": "bxXoPvBA", "appId": "http://localhost:8081" } ] }
- POST /verify
- 
data={"clientData":"eyJvcmln"}
 
 
 
 
 
 
 
 
