[22] [DFN[captive portal]] は、通常の通信の試みに強引に介入し、
[[ネットワーク]]の[[認証]]画面を表示する仕組みです。

[23] [[公共機関]]や[[ホテル]]などの[[インターネット接続]]サービスで、
[[Webブラウザー]]から [[HTTP]] でアクセスしようとした時、
本来の接続先に取り次ぐ代わりに、[[ルーター]]や専用の[[認証サーバー]]などの提供する[[ログイン]]の画面を強引に表示させる形でよく使われています。

[25] 原理的には[[盗聴]]・[[改竄]]に当たるもので、[[ネットワーク]]技術の正常な発展を妨げる有害な技術です。
通常の [[Webサイト]]への悪影響を防ぐために [[Webブラウザー]]が [[captive portal]] 
検出機能を内蔵しなければならなくなったなど、既に歪が生じています。

* プロトコル

[16]
[FIG(short list)[
- [CODE[[[511]]]]
- [[証明書エラー]]
]FIG]

* 検出

[19] [[オンライン判定]]も参照。

* 歴史

[1] [CITE[Network Portal Detection - The Chromium Projects]]
( ([TIME[2014-09-01 09:34:20 +09:00]] 版))
<http://www.chromium.org/chromium-os/chromiumos-design-docs/network-portal-detection>

[2] [CITE@en[562917 – implement captive portal detection]]
( ([TIME[2014-09-01 10:05:31 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=562917>

[3] [CITE[Issue 185087 - chromium - Provide support for captive portal web-based sign during login - An open-source project to help move the web forward. - Google Project Hosting]]
( ([TIME[2014-09-01 10:12:59 +09:00]] 版))
<https://code.google.com/p/chromium/issues/detail?id=185087>

[4] [CITE@en[draft-wkumari-dhc-capport-05 - Captive-Portal identification in DHCP / RA]]
( ([TIME[2014-10-16 11:30:29 +09:00]] 版))
<https://tools.ietf.org/html/draft-wkumari-dhc-capport-05>

[5] [CITE@en[Captive Portals · httpwg/wiki Wiki]]
([TIME[2015-02-04 12:36:10 +09:00]] 版)
<https://github.com/httpwg/wiki/wiki/Captive-Portals>

[6] [CITE@en[Web Applications 1.0 r2339    handle captive portals better in the offline appcache feature]]
([TIME[2008-10-16 09:45:00 +09:00]] 版)
<https://html5.org/r/2339>

[7] [[B-navi]] も [[captive portal]]?

[8] [CITE@en[Necko/CaptivePortal - MozillaWiki]]
([TIME[2015-03-21 17:29:32 +09:00]] 版)
<https://wiki.mozilla.org/Necko/CaptivePortal>

[9] [CITE[Issue 240237 - chromium - Add Chrome OS captive portal detection / UI inside user session - An open-source project to help move the web forward. - Google Project Hosting]]
([TIME[2015-03-21 23:02:03 +09:00]] 版)
<https://code.google.com/p/chromium/issues/detail?id=240237>

[10] [CITE@en[WISPr - Wikipedia, the free encyclopedia]]
([TIME[2015-03-21 21:13:36 +09:00]] 版)
<http://en.wikipedia.org/wiki/WISPr>

[11] [CITE@en[draft-wkumari-dhc-capport-12 - Captive-Portal identification in DHCP / RA]]
([TIME[2015-03-05 19:29:05 +09:00]] 版)
<https://tools.ietf.org/html/draft-wkumari-dhc-capport-12>

[12] [CITE[Issue 71736 - chromium - SSL error page for mail.google.com behind captive portal - An open-source project to help move the web forward. - Google Project Hosting]]
([TIME[2015-09-22 17:47:34 +09:00]] 版)
<https://code.google.com/p/chromium/issues/detail?id=71736>

[13] [[HTTPS]] が [[captive portal]] 行きになっている場合、
[[service identity]] の検証により[[証明書]]エラーとして検出できます。

[14] [CITE@en[draft-wkumari-dhc-capport-16 - Captive-Portal Identification in DHCP / RA]]
([TIME[2015-11-02 01:32:20 +09:00]] 版)
<https://tools.ietf.org/html/draft-wkumari-dhc-capport-16>

[15] [CITE@en[RFC 7710 - Captive-Portal Identification Using DHCP or Router Advertisements (RAs)]]
([TIME[2015-12-08 11:38:52 +09:00]] 版)
<https://tools.ietf.org/html/rfc7710>

[17] [CITE@en[RFC 6585 - Additional HTTP Status Codes]]
([TIME[2015-11-02 08:48:01 +09:00]] 版)
<https://tools.ietf.org/html/rfc6585#appendix-B>

[FIG(quote)[
[FIGCAPTION[
[18] [CITE@en[ImperialViolet - No, don't enable revocation checking]]
( ([[Adam Langley]]著, [TIME[2016-05-09 20:49:45 +09:00]]))
<https://www.imperialviolet.org/2014/04/19/revchecking.html>
]FIGCAPTION]

>  cap­tive por­tals (e.g. hotel WiFi net­works where you have to “login” be­fore you can use the In­ter­net) fre­quently use HTTPS (and thus re­quire cer­tifi­cates) but don't allow you to ac­cess OCSP servers.

]FIG]


[20] [CITE@ja[Wi-Fiについて技術的な質問です。 外資系ホテルでよくあるのです… - 人力検索はてな]]
( ([TIME[2016-06-20 09:53:51 +09:00]]))
<http://q.hatena.ne.jp/1466323368>

[21] [CITE[chrome.networking.config - Google Chrome]]
([TIME[2016-08-08 14:53:03 +09:00]])
<https://developer.chrome.com/extensions/networking_config>

[FIG(quote)[
[FIGCAPTION[
[24] [CITE@ja[Captive Portalとは | OSSでのシステム・デージーネット]]
([TIME[2017-03-16 12:31:45 +09:00]])
<https://www.designet.co.jp/faq/term/?id=Q2FwdGl2ZSBQb3J0YWw>
]FIGCAPTION]

> デージーネットでは、WiFi認証の仕組みを作るためにCaptive Portalの仕組みを利用しています。
> pfSenseのような専用のソフトウェアを利用することもできますが、Linuxサーバに専用の認証ページを用意し、LinuxのFirewalldなどを制御することでも実現できます。また、Captive Portalと連携する機能の付いたWiFiルータやWiFiアクセスポイントと連携して、SNS認証やメール認証ができる仕組みを構築した実績もあります。
> wifidogゲートウェイを作成して、Wi-Fiホットスポット用の仕組みを作成した実績もあります。

]FIG]


[26] [CITE@ja[CaptivePortal | Android Developers]]
([TIME[2016-09-02 03:19:07 +09:00]])
<https://developer.android.com/reference/android/net/CaptivePortal.html>


[28] [CITE@en[853934 - Some captive portals are using 1.1.1.1 and breaking because it's HSTS preloaded - chromium - Monorail]]
([TIME[2018-07-06 15:06:24 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=853934>

[29] [CITE@auto[870038 - Incorrectly getting "This network may require you to visit its login page" - chromium - Monorail]]
([TIME[2018-08-28 23:47:36 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=870038>

[30] [CITE[Network Portal Detection - The Chromium Projects]]
([TIME[2018-08-28 16:21:03 +09:00]])
<https://sites.google.com/a/chromium.org/dev/chromium-os/chromiumos-design-docs/network-portal-detection>


[27] [CITE@en[How to modernize your captive network - Discover - Apple Developer]]
([[Apple Inc.]]著, [TIME[2020-06-23 09:23:57 +09:00]])
<https://developer.apple.com/news/?id=q78sq5rv>

[31] [CITE@en[draft-ietf-capport-rfc7710bis-07 - Captive-Portal Identification in DHCP / RA]]
([TIME[2020-06-21 23:12:26 +09:00]])
<https://tools.ietf.org/html/draft-ietf-capport-rfc7710bis-07>

[32] [CITE@en[draft-ietf-capport-api-08 - Captive Portal API]]
([TIME[2020-06-19 22:06:55 +09:00]])
<https://tools.ietf.org/html/draft-ietf-capport-api-08>