キャプティブネットワークを現代化するには

飛行機、カフェ、ホテルなどでWi-Fiを使って、インターネットに接続した経験がある人なら、利用するために長い規約を読んだり、広告を見せられたり、接続プランを購入したことがあるはずです。これらの「キャプティブ」ネットワークは、インターネット接続のための重要な方法ですが、ログインページが見つからなかったり、利用しているプランで使える残り時間がわからなかったりするものです。

ここで良いお知らせです。iOS 14およびmacOS Big Surでネットワークを使っているユーザーに対しては、こうしたプロセスをよりスムーズで一貫したものにできます。キャプティブWi-Fiネットワークを使用している場合、またはキャプティブネットワークのソリューションを構築している場合は、この機会に是非アップデートを始めましょう。そのために必要な情報を、以下にお伝えします。

キャプティブネットワークをアドバタイズする

従来、キャプティブネットワークは接続している人からのトラフィックをインターセプトする手法を採っていました。iOSとmacOSはデフォルトで、初めて接続するネットワークに自動でプローブを送信し、こうしたインターセプトを検出して、 キャプティブポータルのログインページを表示します。しかしセッションの有効期限が切れると、ユーザーがSafariやその他のAppを使ってアクセスしているページがこのインターセプトの影響を受けて、Safariに異なるページが表示されたり、セキュリティ警告が表示されたりする場合があります。

iOS14とmacOS Big Surの[DHCPまたはIPv6のキャプティブポータル用のルーター広告(RA)オプション](https://tools.ietf.org/html/draft-ietf-capport-rfc7710bis)を統合することで、この問題を解決し、すべてのユーザーに快適なオンライン体験をお届けすることができます。これらのオプションは新しい標準技術の一部で、トラフィックのインターセプトをする必要がなくなり、デバイスが最初にネットワークに接続するときにネットワークが「キャプティブ」であることをアクセスポイントがアドバタイズできるようになります

従来のキャプティブネットワークと上記の標準を採用したネットワークで、ユーザーの体験に違いがないように見えるかもしれませんが、そうではありません。アップデートすることによって、ネットワークは他のユーザーのデバイスに確実な方法でキャプティブ状態を伝えることができるようになり、標準技術にサポートされた新機能の基盤を構築することができます。

ネットワークがこれらのオプションをサポートしている場合、iOSとmacOSは自動的にキャプティブネットワーク状態を処理し始めます。JSON形式で、各オプション内にキャプティブネットワークセッションの状態を提供するURLを記載します。DHCPとIPv6 RAの両方を使用している場合など、複数の方法でキャプティブネットワークをアドバタイズする場合は、それぞれのURLが同一である必要があることに注意してください。

```xml
DHCP Option: 114 (Captive-Portal)
    Length: 38
    Value: https://example.org/captive-portal/api

DHCPv6 Option: 103 (Captive-Portal)
    Length: 38
    Value: https://example.org/captive-portal/api

IPv6 RA オプション: 37 (Captive-Portal)
    Length: 38
    Value: https://example.org/captive-portal/api
```

セッション状態のアップデートを提供する

この標準を採用したキャプティブネットワークは、JSON APIを介して、接続状態に関する詳細情報をデバイスに提供できます。これによってデバイス側では、インターネットにアクセスできるかどうか、どのウェブページをユーザーに表示するか、およびセッションの残り時間について把握できます。

```json
HTTP/1.1 200 OK
Cache-Control: private
Date: Mon, 22 Jun 2020 05:08:13 GMT
Content-Type: application/captive+json
{
    "captive": false,
    "user-portal-url": "https://example.org/portal.html",
    "venue-info-url": "https://flight.example.com/entertainment",
    "seconds-remaining": 326,
    "can-extend-session": true
}
```

ご使用のキャプティブポータルAPIサーバーは、TLS暗号化を使用するホストで実行されている必要があります。この環境では、クライアントデバイスへの通信が変更またはインターセプトできなくなります。

3、2、1 で接続

キャプティブネットワークソリューションを構築するなら、キャプティブネットワークをアドバタイズしてセッションステータスのアップデートを通知できるよう、最新の標準技術をサポートしましょう。ぜひ、iOS 14とmacOS Big Surで試してみてください。また、自社でキャプティブネットワークポータルを導入する場合は、ルーターのベンダーに連絡してキャプティブネットワークの最新標準技術が導入できるかどうかを確認してください。


Specification for Captive Portal Advertisement

Specification for Captive Portal JSON API

Manage captive Wi-Fi networks

NEHotspotHelper