인증 필터
인증 필터를 사용하여 특정 HTTP 서블릿 요청이 특정 제공자에 의해 처리되는지 여부를 판별할 수 있습니다.
Liberty 서버 인증 필터는 server.xml 파일의 authFilter 요소에 지정된 필터 기준을 사용하여 특정 HTTP 서블릿 요청이 인증을 위해 특정 제공자(예: OpenID, OpenID Connect 또는 SPNEGO)에 의해 처리되는지 여부를 판별합니다.
authFilter 요소의 모든 조건이 충족되면 해당 authFilter 요소를 참조하는 특정 제공자에 의해 HTTP 서블릿 요청이 처리됩니다. authFilter 요소의 조건 중 충족되지 않는 조건이 있으면 HTTP 서블릿 요청이 제공자에 의해 처리되지 않습니다.
지원되는 요소
authFilter 요소는 userAgent, host, webApp, remoteAddress 및 requestUrl 요소를 지원합니다.
- userAgent 요소는 수신 HTTP 서블릿 요청에서 추출되는 해당 헤더 값에 대해 비교됩니다. userAgent 요소는 원래 요청에서 사용하는 클라이언트 소프트웨어를 식별하는 "User-Agent" HTTP 요청 헤더에 대해 비교됩니다. 웹 클라이언트 브라우저의 경우 이 값은 요청을 시작하는 데 사용되는 브라우저 유형(Internet Explorer, Firefox, Safari 등)을 반영합니다.
- host 요소는 userAgent 요소와 비슷하게 사용됩니다. host 요소는 요청의 대상 호스트 이름을 식별하는 "Host" HTTP 요청 헤더에 대해 비교됩니다.
- webApp 요소는 이 인증 필터에 의해 보호되는 Liberty 서버에서 호스팅되는 애플리케이션 또는 애플리케이션의 목록을 지정하는 데 사용됩니다.
- remoteAddress 요소는 HTTP 요청을 전송한 클라이언트 애플리케이션의 원격 TCP/IP 주소에 대해 비교됩니다. 이 주제에서 나중에 나오는 예제에 표시된 대로 matchType 속성의 lessThan 또는 greaterThan 값을 사용하여 서브넷 및 범위를 지정하기 위해 와일드카드를 구성할 수 있습니다.
- requestUrl 요소는 요청을 작성하기 위해 클라이언트 애플리케이션이 사용하는 URL에 대해 비교됩니다. 이 주제에서 나중에 나오는 예제에 표시된 대로 단일 URL 패턴이 구성되거나 파이프 연결된 값 목록이 구성됩니다.
인증 필터 예
- 요청 URL에 패턴이 포함됨
- 다음 예제에서는 인증 필터의
일반적인 구성을 보여줍니다. 여기서 "/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>
- 웹 애플리케이션 이름에 패턴이 포함됨
- 다음 예제에서는 웹 애플리케이션 이름이
인증 필터에서 지정됩니다. 수신 요청은 이 필터를 사용하도록 구성된
서비스에 의해 처리될 "myApp" 애플리케이션을 대상으로
지정해야 합니다.
<authFilter id="myAuthFilter"> <webApp id="myWebApp" name="myApp" matchType="contains"/> </authFilter>
- 웹 애플리케이션 이름에 패턴 세트 중 하나가 포함됨
- 다음 예제에서는 웹 애플리케이션의
파이프 연결된 목록이 지정됩니다. 이 필터를 사용하도록 구성된 서비스로
수신 요청을 처리하려면 수신 요청이 "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>