<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ変数</anchor> <dfn><code class="CGI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">REMOTE_USER</anchor></code></dfn> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認証</anchor>のために提供した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者名</anchor>を表します <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src>。</p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <cite xml:lang="en">RFC 3875 - The Common Gateway Interface (CGI) Version 1.1</cite> (<time>2011-11-20 06:09:05 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc3875#section-4.1.11">http://tools.ietf.org/html/rfc3875#section-4.1.11</anchor-external></li></ul></refs></section><section><h1>構文</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> 値の構文は次の通りです <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src>。<pre class="ABNF code">      REMOTE_USER = *<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TEXT</anchor></pre></p></section><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP CGI</anchor> で使われます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SIP CGI</anchor> で使われます。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP認証</anchor>を行った場合 (<code class="CGI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AUTH_TYPE</anchor></code> が <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Basic</anchor></code>
や <code class="CGI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Digest</anchor></code> の場合) は、 <code class="CGI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">REMOTE_USER</anchor></code> はその時の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>の
ID に設定しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 
定められた当時存在しなかった <code>Bearer</code> など<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者名</anchor>が存在しないタイプの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認証方式</anchor>のときは、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者名</anchor>が指定されなかった場合と同じように扱われると思われます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> いわゆる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クッキー認証</anchor>など<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP認証</anchor>以外の方法で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認証</anchor>した場合は使われません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 
ただ、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTPサーバー</anchor>から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">fork</anchor> で実行される伝統的ないわゆる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGIスクリプト</anchor>以外の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI</anchor>
を活用したサーバー側<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラットフォーム</anchor>で、
独自の認証機構と分離した形で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリケーション</anchor>を記述できるような機構を提供するような場合は、
<code>AUTH_TYPE</code>
や
<code>REMOTE_USER</code>
を活用するというのも一案かもしれません。</p></section><section><h1>歴史</h1><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI/1.1</anchor> [NCSA]</figcaption><blockquote><p>If the server supports user authentication, and
the script is protected, this is the username
they have authenticated as. </p></blockquote><p>サーバーが利用者認証に対応していて、
かつスクリプトが保護されているなら、
これは認証された利用者名です。</p></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI/1.1</anchor> [COAR 03]</figcaption><blockquote><p>If the request required authentication using the &quot;Basic&quot; mechanism (i.e., the AUTH_TYPE
metavariable is set to &quot;Basic&quot;), then the value of the REMOTE_USER metavariable is set to the
user-ID supplied. In all other cases the value of this metavariable is undefined. </p></blockquote><p>要求が「基本」方式を使った認証を必須としているなら
(つまり、 <code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AUTH_TYPE</anchor></code>
メタ変数が <code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Basic</anchor></code>
に設定されているなら)、
<code class="CGI">REMOTE_USER</code>
メタ変数の値は供給された利用者 ID
になります。他の全ての場合には、
このメタ変数の値は未定義です。</p><blockquote><ul><li>REMOTE_USER = *OCTET<pre>  
&gt;This variable is specific to requests made <em>via</em> the HTTP protocol. 
&gt;Servers SHOULD provide this metavariable to scripts. </pre></li></ul></blockquote><p>この変数は HTTP プロトコルを<em>介した</em>要求に特有のものです。
サーバーはこのメタ変数をスクリプトに提供する<strong>べきです (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SHOULD</anchor>)。</strong></p></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> [NCSA] の時代には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基本認証</anchor>しかなかったわけですが、 [COAR] は基本認証以外の場合にこのメタ変数の使用を拒んでますね。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 関係するメタ変数に <code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">REMOTE_IDENT</anchor></code> があります。</p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SIP-CGI/1.1</anchor> [RFC 3050] 5.5.1.10</figcaption><blockquote><p>If the message requested authentication (i.e., the AUTH_TYPE
metavariable is set), then the value of the REMOTE_USER metavariable
is set to the user-ID supplied for the authentication.  For Basic
authentication this is the content of the (decoded) &quot;userid&quot; grammar
element; for Digest it is content of &quot;username-value.&quot; For PGP
authentication, it is the URI specified in the &quot;signed-by&quot; parameter
of the Authorization header, if present, otherwise the URI part of
the From header.</p></blockquote><p>メッセージが認証を要求している場合
(すなわち、 <code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AUTH_TYPE</anchor></code>
メタ変数が設定されている場合)、
<code class="CGI">REMOTE_USER</code>
メタ変数の値は認証により供給された利用者
ID に設定されます。
基本認証の場合、これは (復号した)
<code class="SIP">userid</code>
文法要素の内容となります。
Digest の場合は <code class="SIP">username-value</code>
要素の内容となります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PGP</anchor> 認証では、
<code class="SIP">Authorization</code> 頭の
<code class="SIP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">signed-by</anchor></code>
引数に指定された <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI</anchor>
があればこれ、なければ
<code class="SIP">From</code> 頭の URI
部分です。</p><blockquote><p>If some other authentication scheme was requested, this metavariable
SHOULD be set to an appropriate component of the authorization
information identifying the user or entity associated with the
credentials.  If authentication was not requested, this metavariable
is not defined.</p></blockquote><p>他の認証方式が要求された場合、
このメタ変数は証明と関連付けられた利用者又は実体を識別する認証情報の適切な部品が設定される<strong>べきです</strong>。
認証が要求されていない場合、
このメタ変数は定義されません。</p><blockquote><ul><li>REMOTE_USER  =  *OCTET</li></ul></blockquote><blockquote><p>Servers SHOULD provide this metavariable to scripts.</p></blockquote><p>サーバーはこのメタ変数をスクリプトに提供する<strong>べきです</strong>。</p></figure></section><section><h1>メモ</h1></section></body></html>