@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/windows-proxy-wininet-winhttp-dotnet/#article>
    schema:about <https://comcomponent.com/knowledge/wininet/>, <https://comcomponent.com/knowledge/winhttp/> ;
    schema:mentions <https://comcomponent.com/knowledge/wininet-user-proxy/>, <https://comcomponent.com/knowledge/winhttp-machine-proxy/>, <https://comcomponent.com/knowledge/proxy-environment-variables/>, <https://comcomponent.com/knowledge/service-account/>, <https://comcomponent.com/knowledge/pac-file/>, <https://comcomponent.com/knowledge/wpad/>, <https://comcomponent.com/knowledge/dotnet-default-proxy/>, <https://comcomponent.com/knowledge/dotnet-defaultproxy-element/>, <https://comcomponent.com/knowledge/httpclienthandler-proxy/>, <https://comcomponent.com/knowledge/proxy-auth-407/>, <https://comcomponent.com/knowledge/default-proxy-credentials/>, <https://comcomponent.com/knowledge/tls-inspection-proxy/>, <https://comcomponent.com/knowledge/https-connect-tunnel/>, <https://comcomponent.com/knowledge/kerberos/>, <https://comcomponent.com/knowledge/ntlm/>, <https://comcomponent.com/knowledge/group-policy/>, <https://comcomponent.com/knowledge/intune/>, <https://comcomponent.com/knowledge/url-dependent-proxy-routing/> .

<https://comcomponent.com/knowledge/wininet/> a skos:Concept ;
    skos:prefLabel "WinINET"@ja ;
    skos:definition "対話型デスクトップアプリ向けのWindows標準HTTPスタック。ユーザーのインターネットオプション・Cookie・資格情報キャッシュを引き継ぐが、サービスでの利用はサポートされない。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/wininet-user-proxy/> ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/service-account/> .

<https://comcomponent.com/knowledge/winhttp/> a skos:Concept ;
    skos:prefLabel "WinHTTP"@ja ;
    skos:definition "サービス・サーバーサイド用途向けに設計されたWindows標準のHTTPスタック。サービスアカウントでの実行と偽装をサポートする一方、ユーザーのブラウザー設定は共有しない。"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/service-account/> ;
    ks:uses <https://comcomponent.com/knowledge/winhttp-machine-proxy/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/wpad/> .

<https://comcomponent.com/knowledge/wininet-user-proxy/> a skos:Concept ;
    skos:prefLabel "WinINETのユーザー別プロキシ設定"@ja ;
    skos:definition "設定アプリの「プロキシ」(旧インターネットオプション)で構成する、既定ではユーザーごとに保存されるプロキシ設定。"@ja ;
    ks:configuredBy <https://comcomponent.com/knowledge/group-policy/> .

<https://comcomponent.com/knowledge/service-account/> a skos:Concept ;
    skos:prefLabel "サービスアカウント(共用のユーザーアカウント)"@ja ;
    skos:definition "複数人が資格情報を共有して使う、フロー実行専用のユーザーアカウント。Microsoftはベストプラクティスとして推奨していない。"@ja ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/wininet-user-proxy/> .

<https://comcomponent.com/knowledge/winhttp-machine-proxy/> a skos:Concept ;
    skos:prefLabel "WinHTTPのマシンプロキシ設定"@ja ;
    skos:definition "netsh winhttpで構成する、サインインしたユーザーがいない文脈のためのマシン単位のプロキシ既定。"@ja ;
    ks:configuredBy <https://comcomponent.com/knowledge/pac-file/> ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/dotnet-default-proxy/> .

<https://comcomponent.com/knowledge/pac-file/> a skos:Concept ;
    skos:prefLabel "PACファイル(FindProxyForURL)"@ja ;
    skos:definition "URLとホストを引数に取るFindProxyForURL関数を含み、リクエストごとにプロキシのリストまたは直結(DIRECT)を返すスクリプト。"@ja .

<https://comcomponent.com/knowledge/group-policy/> a skos:Concept ;
    skos:prefLabel "グループポリシー"@ja ;
    skos:definition "Active Directoryドメイン環境でWindowsの設定を集中構成する仕組み。"@ja ;
    skos:altLabel "GPO" ;
    skos:altLabel "Group Policy" .

<https://comcomponent.com/knowledge/intune/> a skos:Concept ;
    skos:prefLabel "Microsoft Intune"@ja ;
    skos:definition "クラウドからPC・モバイルデバイスを管理するMicrosoftのMDMサービス。"@ja ;
    skos:altLabel "Intune" .

<https://comcomponent.com/knowledge/url-dependent-proxy-routing/> a skos:Concept ;
    skos:prefLabel "宛先URLごとのプロキシ経路分岐"@ja ;
    skos:definition "PACの判定などにより宛先ごとにプロキシ経由と直通が分かれ、一部の宛先だけ失敗するといった非対称な症状を生むこと。"@ja .

<https://comcomponent.com/knowledge/wpad/> a skos:Concept ;
    skos:prefLabel "WPAD(プロキシ自動検出)"@ja ;
    skos:definition "PACファイルの場所をネットワークから自動的に見つけるプロトコル。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/pac-file/> .

<https://comcomponent.com/knowledge/dotnet-default-proxy/> a skos:Concept ;
    skos:prefLabel "HttpClient.DefaultProxy"@ja ;
    skos:definition "ハンドラーでプロキシを明示しない限りすべてのHttpClientインスタンスが使う静的プロパティ。Windowsでは環境変数を先に読み、未定義ならユーザーのプロキシ設定を読む。"@ja ;
    ks:configuredBy <https://comcomponent.com/knowledge/proxy-environment-variables/> .

<https://comcomponent.com/knowledge/proxy-environment-variables/> a skos:Concept ;
    skos:prefLabel "プロキシ環境変数(HTTP_PROXY等)"@ja ;
    skos:definition "HTTP_PROXY・HTTPS_PROXY・ALL_PROXY・NO_PROXYからなる、クロスプラットフォーム由来のプロキシ指定。"@ja .

<https://comcomponent.com/knowledge/dotnet-defaultproxy-element/> a skos:Concept ;
    skos:prefLabel ".NET Frameworkのdefaultproxy要素"@ja ;
    skos:definition "app.configやmachine.configのsystem.net/defaultProxy要素。既定プロキシを定義し、システム設定より優先される。"@ja .

<https://comcomponent.com/knowledge/httpclienthandler-proxy/> a skos:Concept ;
    skos:prefLabel "HttpClientHandler.Proxy / UseProxy"@ja ;
    skos:definition "ハンドラーへプロキシを明示指定する方法。OS設定や構成ファイルより優先され、UseProxy = falseならプロキシを一切使わない。"@ja ;
    ks:prevents <https://comcomponent.com/knowledge/dotnet-default-proxy/> .

<https://comcomponent.com/knowledge/default-proxy-credentials/> a skos:Concept ;
    skos:prefLabel "DefaultProxyCredentials / UseDefaultCredentials"@ja ;
    skos:definition "システム既定のプロキシへ送る資格情報の指定。多くのクライアントシナリオでは、個別のユーザー名・パスワードではなくサインイン中ユーザーの既定資格情報を使うのが推奨される。"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/proxy-auth-407/> .

<https://comcomponent.com/knowledge/proxy-auth-407/> a skos:Concept ;
    skos:prefLabel "407 Proxy Authentication Required"@ja ;
    skos:definition "認証を要求するプロキシが返すステータスコードと、利用可能な認証方式を列挙するProxy-Authenticateヘッダー。サーバー認証の401とは別物。"@ja .

<https://comcomponent.com/knowledge/kerberos/> a skos:Concept ;
    skos:prefLabel "Kerberos"@ja ;
    skos:definition "チケットによる一度だけの本人確認と相互認証を提供する認証プロトコル。Windows ServerはKerberos version 5と、公開鍵認証・認可データの転送・委任のための拡張を実装する。"@ja ;
    skos:altLabel "Kerberos version 5" ;
    skos:altLabel "Kerberos認証"@ja .

<https://comcomponent.com/knowledge/ntlm/> a skos:Concept ;
    skos:prefLabel "NTLM"@ja ;
    skos:definition "パスワードの一方向ハッシュを使ったチャレンジ/レスポンス方式の認証プロトコル群(LANMAN・NTLMv1・NTLMv2を含む)。相互認証を持たず、サーバーが本物であると仮定できる環境向けに設計されている。"@ja ;
    skos:altLabel "NTLM認証"@ja ;
    skos:altLabel "Windows Challenge/Response" ;
    skos:altLabel "NTLM Security Support Provider" .

<https://comcomponent.com/knowledge/tls-inspection-proxy/> a skos:Concept ;
    skos:prefLabel "TLSインスペクション型プロキシ"@ja ;
    skos:definition "プロキシがTLSを終端して中身を復号し、再暗号化して転送する構成。クライアントには社内CAの証明書が必要になる。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/https-connect-tunnel/> .

<https://comcomponent.com/knowledge/https-connect-tunnel/> a skos:Concept ;
    skos:prefLabel "CONNECTトンネル"@ja ;
    skos:definition "アウトバウンドのHTTPS通信をプロキシ経由で確立するための、プロキシへのCONNECTリクエスト。"@ja .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wininet/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/wininet-user-proxy/> ;
    schema:description "WinINETは対話型デスクトップアプリ向けで、ユーザーのインターネットオプション(プロキシ・Cookie・資格情報キャッシュ)を自動的に引き継ぎ、必要なら資格情報の入力UIも出せる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/wininet/wininet-vs-winhttp> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wininet/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/service-account/> ;
    schema:description "マイクロソフトの指針は「サービス内、またはセッション分離と偽装を必要とするサービス的プロセスで動かすのでなければWinINETを使う」であり、裏を返せばサービスでの利用はサポートされない。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/wininet/wininet-vs-winhttp>, <https://learn.microsoft.com/windows/win32/winhttp/about-winhttp> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/winhttp/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/service-account/> ;
    schema:description "WinHTTPはサービス・サーバーサイド用途向けに設計され、サービスアカウントでの実行と偽装をサポートする代わりに、ユーザーのブラウザー設定・Cookie・資格情報は共有せずUIも出さない。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/winhttp/about-winhttp>, <https://learn.microsoft.com/windows/win32/wininet/wininet-vs-winhttp> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/winhttp/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/winhttp-machine-proxy/> ;
    schema:description "WinHTTPのマシン既定プロキシはnetsh winhttp show/set/import/resetで操作する。サインインしたユーザーがいない文脈のためのマシン単位の既定である。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/administration/windows-commands/netsh-winhttp> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/winhttp-machine-proxy/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/pac-file/> ;
    schema:description "netsh winhttp set proxyは静的設定で、プロキシの自動検出もPAC URLの指定もプロキシ認証も扱わない。PACや自動検出をマシン単位で構成するにはset advproxyでJSON形式の詳細設定(Proxy・ProxyBypass・AutoconfigUrl・AutoDetect)を使う。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/deployment/do/delivery-optimization-proxy>, <https://learn.microsoft.com/windows-server/administration/windows-commands/netsh-winhttp> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/service-account/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/wininet-user-proxy/> ;
    schema:description "LocalSystemやサービスアカウントには、管理者が自分の画面で設定したユーザー別プロキシは見えていない。同じマシンでも実行アカウントが違えば見えているプロキシ設定が違う。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/winhttp/about-winhttp>, <https://learn.microsoft.com/windows/deployment/do/delivery-optimization-proxy> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wininet-user-proxy/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/group-policy/> ;
    schema:description "グループポリシー「プロキシの設定をユーザーごとではなくコンピューターごとに設定する」を有効にすると、ユーザー別設定をマシン単位に切り替えて全ユーザーへ同じ設定を適用できる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/deployment/do/delivery-optimization-proxy> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wininet-user-proxy/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/intune/> ;
    schema:description "MDMではNetworkProxy CSPでデバイス単位にプロキシを構成できる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/deployment/do/delivery-optimization-proxy> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/pac-file/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/url-dependent-proxy-routing/> ;
    schema:description "PACスクリプトのFindProxyForURL(url, host)はリクエストごとにプロキシのリストを計算し、直接接続でよい場合はDIRECTを返す。だから「あのサイトは通るのにこのAPIだけ通らない」がPACの分岐で起こり得る。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/winhttp/winhttp-autoproxy-support> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpad/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/pac-file/> ;
    schema:description "WinHttpGetProxyForUrlはWPADプロトコルの実装で、PACファイルがURLごとに異なるプロキシを返し得るためURL単位で呼び出す必要がある。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/api/winhttp/nf-winhttp-winhttpgetproxyforurl> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/winhttp/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/wpad/> ;
    schema:description "WinHttpOpenのdwAccessTypeにWINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY(Windows 8.1以降)を指定すると、システム/ユーザーのプロキシ設定を使ってプロキシを自動的に解決する。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/api/winhttp/nf-winhttp-winhttpopen> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-default-proxy/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/proxy-environment-variables/> ;
    schema:description "WindowsではHTTP_PROXY・HTTPS_PROXY・ALL_PROXY・NO_PROXY環境変数を先に読み、未定義ならユーザーのプロキシ設定を読む。いずれかが定義されているとOS側の設定より優先されるため、残された環境変数が事故の温床になる。NO_PROXYはワイルドカードをサポートせず、サブドメインに一致させるには先頭にドットを付ける。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.net.http.httpclient.defaultproxy> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/winhttp-machine-proxy/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-default-proxy/> ;
    schema:description ".NET(Core以降)のHttpClientはWinHTTPのマシン設定を読まないため、.NET製サービスにはシステム環境変数を設定するか、HttpClientHandler.Proxyで明示指定する。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.net.http.httpclient.defaultproxy>, <https://learn.microsoft.com/dotnet/fundamentals/networking/http/httpclient> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-defaultproxy-element/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/wininet-user-proxy/> ;
    schema:description ".NET FrameworkではdefaultProxy要素が既定プロキシを定義し、構成ファイルの設定がシステム(実行中アカウントのインターネットオプション)の設定より優先される。要素を空のままにすればシステム設定が使われる。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/framework/network-programming/configuring-internet-applications>, <https://learn.microsoft.com/dotnet/framework/configure-apps/file-schema/network/defaultproxy-element-network-settings> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/httpclienthandler-proxy/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-default-proxy/> ;
    schema:description "ハンドラーへの明示指定はOS設定や構成ファイルより優先され、UseProxy = falseにすればプロキシを一切使わない。明示指定がなくOS設定に従う場合は、ドットを含まないフラット名やループバックアドレスなどがローカルとみなされて自動バイパスされ得る。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/fundamentals/networking/http/httpclient> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/default-proxy-credentials/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/proxy-auth-407/> ;
    schema:description "OS設定由来の既定プロキシを使いつつ認証だけ通すにはDefaultProxyCredentialsを使う。これはUseProxy = trueかつProxy = nullでシステム既定のプロキシを使う場合に、その既定プロキシへ送る資格情報である。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.net.http.httpclienthandler.defaultproxycredentials>, <https://learn.microsoft.com/dotnet/api/system.net.webproxy.credentials> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/proxy-auth-407/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/kerberos/> ;
    schema:description "プロキシ認証の方式にはBasicのほかNegotiate(Kerberos/NTLM)のようなチャレンジ/レスポンス方式があり、後者ではパスワード自体はネットワークを流れず複数回のやり取りで認証が完了する。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/winhttp/authentication-in-winhttp> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/proxy-auth-407/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ntlm/> ;
    schema:description "Proxy-Authenticateヘッダーに列挙される方式にNTLMが含まれる場合、プロキシ認証はNTLMのチャレンジ/レスポンスで行われる。接続先サーバーの認証要求である401とWWW-Authenticateとは、資格情報を渡す相手も設定する場所も違う。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/winhttp/authentication-in-winhttp> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/tls-inspection-proxy/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/https-connect-tunnel/> ;
    schema:description "TLSインスペクション型のプロキシはクライアントからのCONNECT要求を受けたうえで、トンネルをそのまま通さずTLSを終端して中身を復号し、再暗号化して転送する。端から端まで不透明なトンネルにはならないため、クライアント側に社内CA証明書が配布されていないマシンやランタイムでは証明書検証エラーになる。アプリ側で検証を無効化するのではなく、証明書ストアへの配布で解決する。"@ja ;
    ks:evidence <https://learn.microsoft.com/microsoft-365/enterprise/network-intermediation>, <https://learn.microsoft.com/windows/deployment/do/delivery-optimization-proxy> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .
