
![[8.5.5.5 以降]](../ng_v8555.gif)
認証フィルター
認証フィルターを使用して、特定の HTTP サーブレット要求が特定のプロバイダーで処理されるかどうかを判別できます。
Liberty プロファイル・サーバーの認証フィルターは、server.xml ファイルの authFilter エレメントに指定されているフィルター基準を使用して、認証に特定のプロバイダー (OpenID、OpenID COnnect、または SPNEGO) によって特定の HTTP サーブレット要求が処理されるかどうかを判別します。
authFilter エレメントのすべての条件が満たされている場合、HTTP サーブレット要求は、その authFilter エレメントを参照する特定のプロバイダーによって処理されます。authFilter エレメント内のいずれかの条件が満たされていない場合、HTTP サーブレット要求はそのプロバイダーによって処理されません。
サポートされるエレメント
authFilter エレメントでは、userAgent、host、webApp、remoteAddress、および requestUrl の各エレメントがサポートされます。
- userAgent エレメントは、着信 HTTP サーブレット要求から抽出された対応するヘッダー値に対して比較されます。 userAgent エレメントは、「User-Agent」HTTP 要求ヘッダーに対して比較されます。このヘッダーは、元の要求で使用されているクライアント・ソフトウェアを識別します。Web クライアント・ブラウザーの場合、この値は、要求の開始に使用されたブラウザー・タイプ (Internet Explorer、Firefox、Safari など) を表します。
- host エレメントは、userAgent エレメントと同様に使用されます。 host エレメントは、「Host」HTTP 要求ヘッダーに対して比較されます。このヘッダーは要求のターゲット・ホスト名を識別します。
- webApp エレメントは、当該認証フィルターによって保護されている Liberty プロファイル・サーバー上にホストされているアプリケーションまたはアプリケーションのリストを指定するために使用されます。
- remoteAddress エレメントは、HTTP 要求を送信したクライアント・アプリケーションのリモート TCP/IP アドレスに対して比較されます。このトピック内で後に示している例のように、サブネットを指定するためにワイルドカードを構成したり、matchType 属性の lessThan 値または greaterThan 値を使用して範囲を構成したりすることができます。
- requestUrl エレメントは、要求を作成するためにクライアント・アプリケーションによって使用されている URL に対して比較されます。このトピック内で後で示している例のように、単一の URL パターンを構成するか、パイプで区切った値のリストを構成します。
認証フィルターの例
以下の例では、認証フィルターの標準的構成を示します。 ここでは、"/SimpleServlet" が含まれている要求 URL の着信要求が、このフィルターを使用するように構成されているサービスによって処理されます。
<authFilter id="myAuthFilter">
<requestUrl id="myRequestUrl" urlPattern="/SimpleServlet" matchType="contains"/>
</authFilter>
以下の例では、パイプで区切られた要求 URL パターンのリストを指定しています。このフィルターを使用するように構成されているサービスで着信要求を処理するには、着信要求 URL に "/SimpleServlet"、"/EmployeeRoleServlet"、または "/AllRoleServlet" のいずれかが含まれている必要があります。
<authFilter id="myAuthFilter">
<requestUrl id="myURL" urlPattern="/SimpleServlet|/EmployeeRoleServlet|/AllRoleServlet" matchType="contains" />
</authFilter>
以下の例では、認証フィルターで Web アプリケーション名を指定しています。このフィルターを使用するように構成されているサービスで着信要求を処理するには、その要求のターゲットが "myApp" アプリケーションでなければなりません。
<authFilter id="myAuthFilter">
<webApp id="myWebApp" name="myApp" matchType="contains"/>
</authFilter>
以下の例では、パイプで区切られた Web アプリケーションのリストを指定しています。このフィルターを使用するように構成されているサービスで着信要求を処理するには、着信要求のターゲットが、"myApp1"、"myApp2"、または "myApp3" のいずれかのアプリケーションでなければなりません。
<authFilter id="myAuthFilter">
<webApp id="myWebApp" name="myApp1|myApp2|myApp3" matchType="contains"/>
</authFilter>
以下の例では、remoteAddress エレメントでワイルドカードを使用する方法を示します。この構成では、着信要求が 127.0.0.* の範囲内の IP アドレスからのものである場合、このフィルターを使用するように構成されているサービスがその要求を処理します。
<authFilter id="myAuthFilter">
<remoteAddress id="myRemoteAddress" ip="127.0.0.*" matchType="equals"/>
</authFilter>
以下の例では、requestUrl エレメントに、パイプで区切られた値のリストを使用する方法を示します。 リスト内のパターンのいずれかに一致すれば、その特定のエレメントの要件が満たされます。この例では、要求 URL には、"/SimpleServlet"、"/EmployeeRoleServlet"、または "/AllRoleServlet" のいずれかが含まれている必要があります。さらに、要求 URL に "/ManagerRoleServlet" が含まれていてはならず、要求が Internet Explorer ユーザー・エージェントからのものでなければなりません。
<authFilter id="myAuthFilter">
<requestUrl id="myURL1" urlPattern="/SimpleServlet|/EmployeeRoleServlet|/AllRoleServlet" matchType="contains" />
<requestUrl id="myURL2" urlPattern="/ManagerRoleServlet" matchType="notContain" />
<userAgent id="myAgent" agent="IE" matchType="contains" />
</authFilter>
- 要求 URL にパターン "/SimpleServlet" が含まれている
- ターゲットのドメインに "host.example.com" が含まれている
- IP アドレス 127.0.0.1 からのものである
- Firefox ブラウザーからのものである
- ターゲット・アプリケーションの名前が myApp である
<authFilter id="myAuthFilter">
<requestUrl id="myRequestUrl" urlPattern="/SimpleServlet" matchType="contains"/>
<host id="myHost" name="host.example.com" matchType="contains"/>
<remoteAddress id="myAddress" ip="127.0.0.1" matchType="equals" />
<userAgent id="myUserAgent" agent="Firefox" matchType="equals"/>
<webApp id="myWebApp" name="myApp" matchType="contains"/>
</authFilter>