認証フィルター
認証フィルターを使用して、特定の 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 パターンを構成するか、パイプで区切った値のリストを構成します。
認証フィルターの例
- 要求 URL に 1 つのパターンが含まれている
- 以下の例では、認証フィルターの標準的構成を示します。
ここでは、"/SimpleServlet" が含まれている要求 URL の着信要求が、このフィルターを使用するように構成されているサービスによって処理されます。
<authFilter id="myAuthFilter"> <requestUrl id="myRequestUrl" urlPattern="/SimpleServlet" matchType="contains"/> </authFilter>
- 要求 URL に一連のパターンのいずれかが含まれている
- 以下の例では、パイプで区切られた要求 URL パターンのリストを指定しています。このフィルターを使用するように構成されているサービスで着信要求を処理するには、着信要求 URL に "/SimpleServlet"、"/EmployeeRoleServlet"、または "/AllRoleServlet" のいずれかが含まれている必要があります。
<authFilter id="myAuthFilter"> <requestUrl id="myURL" urlPattern="/SimpleServlet|/EmployeeRoleServlet|/AllRoleServlet" matchType="contains" /> </authFilter>
- Web アプリケーション名に 1 つのパターンが含まれている
- 以下の例では、認証フィルターで Web アプリケーション名を指定しています。このフィルターを使用するように構成されているサービスで着信要求を処理するには、その要求のターゲットが "myApp" アプリケーションでなければなりません。
<authFilter id="myAuthFilter"> <webApp id="myWebApp" name="myApp" matchType="contains"/> </authFilter>
- Web アプリケーション名に一連のパターンのいずれかが含まれている
- 以下の例では、パイプで区切られた Web アプリケーションのリストを指定しています。このフィルターを使用するように構成されているサービスで着信要求を処理するには、着信要求のターゲットが、"myApp1"、"myApp2"、または "myApp3" のいずれかのアプリケーションでなければなりません。
<authFilter id="myAuthFilter"> <webApp id="myWebApp" name="myApp1|myApp2|myApp3" matchType="contains"/> </authFilter>
- 要求が特定の IP アドレスから発信されている
- 以下の例では、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>