18
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OSSTechAdvent Calendar 2019

Day 11

iPhone(iOS13)でパスワードレス(WebAuthn)認証を試す

Last updated at Posted at 2019-12-16

iPhone(iOS13)でパスワードレス(FIDO2)認証

ついに2019/12/11にリリースされた iOS 13.3 でパスワードレス(FIDO2)認証がサポートされました。
https://support.apple.com/ja-jp/HT210393#133
引用

このアップデートにはバグ修正とその他の改善も含まれています。このアップデートには以下が含まれます:
SafariにNFC、USB、LightningのFIDO2準拠のセキュリティキーへのサポートを追加

しかしNFC、USB、Lightningに限定され、BluetoothやTouch IDは含まれません。<惜しい!!
惜しいですが、まずはFIDO2がiOSのSafari上で動作するようになった事を素直に歓迎しつつ、試してみました。
※2020/06/22にiOS14でのFaceID、TouchIDへの対応が発表されました。iOS14betaがリリースされましたら、そちらについても検証します。
https://developer.apple.com/documentation/safari-release-notes/safari-14-beta-release-notes

OpenAM14のWebAuthn認証モジュールを呼ぶと以下のようなダイアログが表示されるようになりました。

IMG-2125.PNG 「キーをiPhoneの上部に」というのがミソです。上部以外では反応しません。

iOS 13.3 2019/12/11 時点の動作状況

早速というほどのスピードでは無いですが、手持ちのデバイスで試してみました。
(2020/04/09 Update)
※iPhone7 SIMフリー版 でテストしてます。

利用可能なブラウザ

今の所はSafariしか動作しないです。
Safari以外のブラウザは12/11より前のリリースなので、ある意味当然な事です。
以降にリリースされるバージョンに期待です。(2020/04/09 Update)

App Ver. 動作
Safari 13.x
Chrome 80.3987.95
Firefox 24.1

動作を試した認証デバイス

接続方法はNFCかLightningです。

メーカー モデル名 接続方法
Yubico Yubikey 5 NFC NFC
Yubico Yubikey 5Ci Lightning
Google USB Titan Security Key NFC
Feitian AllinPass(K33) NFC
左から表の降順で、Yubikey5NFC, Yubikey5Ci, Google Titan, Allinpass
IMG-2133.jpg

試したFIDO2のオプション

residentKeyやuserVerificationなど登録、認証時のオプションについて試してみました。
userVerificationが使えないです。キーにPINが設定されていても、prefferedの場合は無視され動作し、requireの場合はPIN入力のダイアログが出ずにダンマリです。
※iOS14ではPIN入力もサポートされる予定です。

オプション 利用可否
residentKey ☓※1
userVerification
※1 キーにuser.id等保存されることは確認できましたが、userVerificationが出来ないのでユーザーネームレス認証に使えないです。
iOS以外ので環境では、residentKey=trueにすると、userVerification=discouragedにしても、認証デバイスへPIN設定を強制するダイアログが出てしまいます。デバイス(実装)依存かもしれませんが、これ以外の動作をするデバイスが今の所手元にはありません。
residentkey.png

複数認証デバイス登録時の対応

RPサーバーに一人のユーザーで複数の認証デバイスを登録すると、OpenAM14ではデバイスは以下のような表示となります。
keys2.png

複数の認証デバイスが登録されていると、認証開始時にRPサーバーから登録されているCredentialIDを全て提示するのがWebAuthnですが、ちゃんとハンドリングできるかはクライアント側次第です。
で、これは動作しました。

ローカル認証に関する実装が無い感じを受けるのですが、いずれTouch ID/Face IDと共に実装されてくるのでしょうか。本命はそっちだと信じたいです。※iOS14にて対応予定と発表ありました。iOS14 Safari 14のTouch ID/Face ID対応について記事書きました。

18
9
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?