ドメインバインドコードでSMSのパスコードのセキュリティを強化する

多くのWebサイトやAppでは、より安全にログインができるように、SMSにパスコードを送信するサービスを導入しています。iPhoneでは、セキュリティコードの自動入力(Security Code AutoFill)を使用すると、「QuickType」バーにコードが自動的にコピーされ、コードをすばやく入力することができます。macOS Big Surを実行しているMacでは、Mac Catalystおよび AppKit App上でも自動入力を利用できます。

さらに、iOS 14およびmacOS Big Surでは、コードを特定のWebドメインに関連付けさせることで、さらなる安全なSMSのパスコードを実現しています。

ドメインバインドコードのしくみ

ドメインバインドコードを使用すると、ドメインがWebサイトまたはAppに関連付けられたドメインのいずれかと一致する場合にのみ、コードが自動入力されます。たとえば、「@example.com #123456」で終わるSMSメッセージを受信した場合、 自動入力は、example.comとそのサブドメイン、またはexample.comに関連付けられたAppとやりとりするときに、123456のコードを自動で入力します。しかし、「@example.net #123456」で終わるSMSメッセージを受信した場合、example.comまたはexample.comの関連Appでは、そのコードが自動入力されることはありません。これにより、ユーザーを陥れようとしている人が、ユーザーを騙してフィッシングサイトにワンタイムコードを入力させることは困難になります。

SMSのパスコードがSafariの「QuickType」バーに表示されています。

iOSおよびmacOSでは、ドメインバインドコードに加えて通常のSMSのパスコードも表示されますが、みなさまのWebサイトやAppで通常の認証方式を採用している場合でも、ユーザーにより安全な体験を提供するために、自動入力を導入することをお勧めします。メッセージにドメイン情報が含まれていない場合は、関連するすべての項目にコードは自動入力されます。

SMSのドメインバインドコードを設定するには

ドメインバインドコードは、 Webサイトおよび関連付けられたドメインを持つAppの両方で利用できます。

Webサイトでドメインバインドコードを設定する iOSおよびmacOS Big SurのSafariでは、一般的に、自動入力はすでに導入され自動的に機能するため、追加情報を加える必要がありません。自動入力が機能しない場合は、Webページのテキストフィールドにautocomplete=on-time-codeを追加してください。これにより、Safariはそのフィールドに該当するコードを提供するようになります。

Appでドメインバインドコードを設定する Appに関連付けられたドメインを提供することで、ドメインバインドコードをサポートできます。ドメインでユニバーサルリンクをサポートしている場合、またはAppのログイン画面で自動入力がドメインに保存されているパスワードを提示している場合は、Appはすでにドメインに関連付けられています。

Learn more about supporting associated domains

メモ:Appのログインフローをテストするときに問題が発生した場合は、App内のどのフィールドがワンタイムコードのフィールドであるかを明確にするために、追加して情報を加える必要があります。iOSおよびMac Catalyst Appの場合は、フィールドのtextContentTypeプロパティをUITextContentType.oneTimeCodeに設定してください。macOS上のAppKit Appの場合は、NSTextFieldcontentTypeプロパティがあり、これをNSTextContentTypeOneTimeCodeに設定する必要があります。


SMSのドメインバインドコードをフォーマットするには

AppまたはWebサイトがドメインバインドコードを受信するように設定したら、バックエンドサービスを介して送信するSMSメッセージに、ドメインとコードの両方を含めた情報を送信します。送信するテキストは次のようなものです。

123456は、サンプルコードです。

@example.com #123456

最後の行を除き、メッセージの全体部分は自由形式です。メッセージは自由にカスタマイズできますが、コードを受け取る人にとってメッセージの意味が明確に伝わるようにします。

メッセージの最後の行では、iPhone、iPad、またはMacの自動入力にドメインとコードをバインドするために必要な情報を提供し、適切なWebサイトまたはAppのコードを提示しています。

ドメインバインドコードを正しく動作させるには、メッセージの最後の行にドメインとコードをバインドするための必要な情報を含め、ドメインとコードが正しい順序で提示されている必要があります。

@example.com

これは最後の行の最初の部分であり、コードを入力するAppまたはWebサイトのドメインが含まれています。ワンタイムコードのセグメントを開始する前に、ドメインの後に必ず半角スペースを1つ入れるようにしてください。

#123456(123456というコードを表しています)

最後の行の2番目の部分は、#で始まり、AppまたはWebサイトのワンタイムコードを含む文字列が含まれます。

SMSのパスコードを改善する

ドメインバインドコードは、デベロッパが簡単に実装でき、AppやWebサイトを使用するユーザーが理解しやすく、SMSに送信されるコードのセキュリティを強化します。また、W3CのWeb Platform Incubator Community Groupでは、ドメインバインドコードおよびメッセージ形式の開発についてさらに詳しく知ることができます。

Resources

Learn more about domain-bound codes

Allowing apps and websites to link to your content