The Library > Authentication page allows you to set up authentication servers and create authentication rules with options for client-side Basic or Forms and server-side NTLM or BASIC.
Setting up Authentication – A Workflow
Please carry out the following steps as a minimum to apply Authentication to your service.
1. Create an Authentication Server.
2. Create an Authentication Rule that uses an Authentication Server.
3. Create a flightPATH rule that uses an Authentication Rule.
4. Apply the flightPATH rule to a Service
Authentication Servers
To set up a working authentication method, we must first set up an authentication server.
· Click the Add Server button.
· This action will produce a blank row ready for completion.
Option
|
Description
|
Name
|
Give your server a name for identification purposes – this name is used in the rules
|
Description
|
Add a description
|
Authentication Method
|
Choose an authentication method
LDAP – basic LDAP with usernames and passwords sent in clear text to the LDAP server.
LDAP-MD5 – basic LDAP with username in clear text and password MD5 hashed for increased security.
LDAPS – LDAP over SSL. Sends the password in clear text within an encrypted tunnel between the ADC and LDAP server.
LDAPS-MD5 – LDAP over SSL. The password is MD5 hashed for added security within an encrypted tunnel between the ADC and the LDAP server
|
Domain
|
Add in the domain name for the LDAP server.
|
Server Address
|
Add the IP address or hostname of the authentication server
LDAP – IPv4 address or hostname.
LDAP-MD5 – hostname only (IPv4 address will not work)
LDAPS – IPv4 address or hostname.
LDAPS-MD5 – hostname only (IPv4 address will not work).
|
Port
|
Use port 389 for LDAP and port 636 for LDAPS by default. No need to add the port number for LDAP and LDAPS. When other methods become available, you will be able to configure them here
|
Search Conditions
|
Search conditions must conform to RFC 4515. Example:
(MemberOf=CN=Phone- VPN,CN=Users,DC=mycompany,DC=local).
|
Search Base
|
This value is the starting point for the search in the LDAP database.
Example dc=mycompany,dc=local
|
Login Format
|
Use the login format you need.
Username – with this format chosen, you need only enter the username. Any user and domain information entered by the user is deleted, and the domain information from the server is used.
Username and Domain – The user must enter the whole domain and username syntax. Example: mycompany\gchristie OR someone@mycompany. The domain information entered at the server level is ignored.
Blank – the ADC will accept anything the user inputs and send it on to the authentication server. This option is used when using MD5.
|
Passphrase
|
This option is not used in this version.
|
Dead Time
|
Not used in this version
|
Authentication Rules
The next stage is to create the authentication rules for use with the server definition.
Field
|
Description
|
Name
|
Add a suitable name for your authentication rule.
|
Description
|
Add a suitable description.
|
Root Domain
|
This must be left blank unless you need single-sign-on across sub-domains.
|
Authentication Server
|
This is a drop-down box containing servers that you have configured.
|
Client Authentication:
|
Choose the value appropriate to your needs:
Basic (401) – This method uses the standard 401 authentication method
Forms – this will present the ADC default form to the user. Within the form, you can add a message. You can select a form that you have uploaded using the section below.
|
Server Authentication
|
Choose the appropriate value.
None – if your server does not have any existing authentication, select this setting. This setting means that you can add authentication abilities to a server that previously had none.
Basic – if your server has basic authentication (401) enabled, then select BASIC.
NTLM – if your server has NTLM authentication enabled, then select NTLM.
|
Form
|
Choose the appropriate value
Default – Selecting this option will result in the ADC using its built-in form.
Custom – you can add a form that you have designed and select it here.
|
Message
|
Add a personal message to the form.
|
Timeout
|
Add a timeout to the rule, after which the user will be required to authenticate again. Note the Timeout setting is only valid for Forms-based authentication.
|
Single Sign-On
If you wish to provide a single sign-on for users, complete the Root Domain column with your domain. In this example, we have used edgenexus.io. We can now have multiple services that will use edgenexus.io as the root domain, and you will only have to log in once. If we consider the following services:
· Sharepoint.mycompany.com
· usercentral.mycompany.com
· appstore.mycompany.com
These services can reside on one VIP or can be distributed across 3 VIPs. A user accessing usercentral.mycompany.com for the first time will be presented with a form asking them to log in depending on the authentication rule used. The same user can then connect to appstore.mycompany.com and will be authenticated automatically by the ADC. You can set the timeout, which will force authentication once this period of inactivity has been reached.
Forms
This section will enable you to upload a custom form.
How to create your custom form
Although the basic form the ADC provides is sufficient for most purposes, there will be occasions where companies wish to present their own identity to the user. You can create your custom form that users will be presented with to fill in in such cases. This form must be in either HTM or HTML format.
Option
|
Description
|
Name
|
form name = loginform
action = %JNURL%
Method = POST
|
Username
|
Syntax: name = “JNUSER”
|
Password:
|
name=”JNPASS”
|
Optional Message1:
|
%JNMESSAGE%
|
Optional Message2:
|
%JNAUTHMESSAGE%
|
Images
|
If you wish to add an image, then please add it in-line using Base64 encoding.
|
Example html code of a very basic and simple form
<HTML>
<HEAD>
<TITLE>SAMPLE AUTH FORM</TITLE>
</HEAD>
<BODY>
%JNMESSAGE%<br>
<form name=”loginform” action=”%JNURL%” method=”post“> USER: <input type=”text” name=”JNUSER” size=”20” value=””></br>
PASS: <input type=”password” name=”JNPASS” size=”20” value=””></br>
<input type=”submit” name=”submit” value=”OK“>
</form>
</BODY>
</HTML>
Adding a custom form
Once you have created a custom form, you can add it using the Forms section.
1. Choose a name for your form
2. Browse locally for your form
3. Click Upload
Previewing your custom form
To view the custom form that you have just uploaded, you select it and click Preview. You may also use this section to delete forms that are no longer required.
Cache
The ADC is capable of caching data within its internal memory and periodically flushes this Cache to the ADC's internal storage. The settings that manage this functionality are provided within this section.
Global Cache Settings
Maximum Cache Size (MB)
This value determines the maximum RAM that the Cache can consume. The ADC Cache is an in-memory cache that is also periodically flushed to the storage medium to maintain cache persistence after restarts, reboots, and shutdown operations. This functionality means that the maximum cache size must fit within the memory footprint of the appliance (rather than disk space) and should be no more than half of the available memory.
Desired Cache Size (MB)
This value denotes the optimum RAM to which the Cache will be trimmed. While the maximum cache size represents the absolute upper boundary of the Cache, the desired cache size is intended as the optimum size that the Cache should attempt to attain whenever an automatic or manual check on the cache size is made. The gap between the maximum and desired cache size exists to accommodate the arrival and overlap of new content between periodic checks on cache size to trim expired content. Once again, it may be more effective to accept the default value (30 MB) and periodically review the size of the Cache under "Monitor -> Statistics" for appropriate sizing.
Default Cache Time (D/HH:MM)
The value entered here represents the life of content without an explicit expiry value. The default caching time is the period for which content without a "no-store" directive or explicit expiry time in the traffic header is stored.
The field entry takes the form "D/HH:MM" – so an entry of "1/01:01" (default is 1/00:00) means to store the ADC will hold the content for one day, "01:00" for one hour, and "00:01" for one minute.
Cachable HTTP Response Codes
One of the cached data sets is HTTP responses. The HTTP response codes that are cached are:
· 200 – Standard response for successful HTTP requests
· 203 – Headers are not definitive but are gathered from a local or a 3rd party copy
· 301 – The requested resource has been assigned a new permanent URL
· 304 – Not modified since the last request & locally cached copy should be used instead
· 410 – Resource is no longer available at the server, and no forwarding address is known
This field should be edited with caution as the most common cacheable response codes are already listed.
Cache Checking Time (D/HH:MM)
This setting determines the time interval between cache trim operations.
Cache-Fill Count
This setting is a helper facility to help fill the Cache when a certain number of 304's have been detected.
Apply Cache Rule
This section allows you to apply a cache rule to a domain:
· Add domain manually with the Add Records button. You must use a fully qualified domain name or an IP address in dotted-decimal notation. Example www.mycompany.com or 192.168.3.1:80
· Click the drop-down arrow and choose your domain from the list
· The list will be populated so long as traffic has passed through a virtual service and a caching strategy has been applied to the virtual service
· Choose your cache rule by double-clicking on the Caching Rulebase column and selecting from the list
Create Cache Rule
This section allows you to create several different caching rules that can then be applied to a domain:
· Click Add Records and give your rule a name and description
· You can either type your conditions in manually or use the Add Condition
To add a condition using the Selection Rulebase:
· Choose Include or Exclude
· Choose All JPEG Images
· Click on the + Add symbol
· You will see that 'include *.jpg' has now been added to the conditions
· You can add more conditions. If you choose to do this manually, you need to add each condition on a NEW line. Please note that your rules will display on the same line until you click in the Conditions box then they will show on a separate line
flightPATH
flightPATH is the traffic management technology built into the ADC. flightPATH allows you to inspect HTTP and HTTPS traffic in real-time and perform actions based on conditions.
flightPATH rules must be applied to a VIP when IP objects are used within the rules.
A flightpath rule consists of four elements:
1. Details, where you define the flightPATH Name and Service to which it is attached.
2. Condition(s) that can be defined that cause the rule to be triggered.
3. Evaluation that allows the definition of variables that can be used within Actions
4. Actions that are used to manage what should happen when conditions are met
Details
The details section shows the available flightPATH rules. You can add new flightPATH rules and remove defined ones from this section.
Adding a new flightPATH rule
Field
|
Description
|
FlightPATH Name
|
This field is for the name of the flightPATH rule. The name you provide here appears in and is referenced within other parts of the ADC.
|
Applied to VS
|
This column is read-only and shows the VIP to which the flightPATH rule is applied.
|
Description
|
Value representing a description provided for readability purposes.
|
Steps to add a flightPATH rule
1. First, click the Add New button located in the Details section.
2. Enter a name for your rule. Example Auth2
3. Enter a description of your rule
4. Once the rule has been applied to a service, you will see the Applied To column auto-populate with an IP address and port value
5. Don't forget to hit the Update button to save your changes or if you make a mistake, just hit cancel revert to the previous state.
Condition
A flightPATH rule can have any number of conditions. The conditions work on an AND basis allow you to set the condition on which the action is triggered. If you want to use an OR condition, create an additional flightPATH rule and apply it to the VIP in the correct order.
You can also use RegEx by selecting Match RegEx in the Check field and the RegEx value in the Value field. The inclusion of RegEx evaluation extends the capability of flightPATH tremendously.
Creating a new flightPATH condition
Condition
We provide several Conditions as pre-defined within the drop-down and cover all foreseen scenarios. When new Conditions are added, these will be available through Jetpack updates.
Choices available are:
CONDITION
|
DESCRIPTION
|
EXAMPLE
|
<form>
|
HTML forms are used to pass data to a server
|
Example "form doesn't have length 0"
|
GEO Location
|
Compares the source IP address to the ISO 3166 Country Codes
|
GEO Location does equal GB, OR GEO Location does equal Germany
|
Host
|
Host extracted from the URL
|
www.mywebsite.com or 192.168.1.1
|
Language
|
Language extracted from the language HTTP header
|
This condition will produce a dropdown with a list of Languages
|
Method
|
Drop-down of HTTP methods
|
Drop-down that includes GET, POST, etc
|
Origin IP
|
If upstream proxy supports X-Forwarded-for (XFF) it will use the true Origin address
|
Client IP. It can also use multiple IPs or subnets.
10\.1\.2\.* is 10.1.2.0 /24 subnet
10\.1\.2\.3|10\.1\.2\.4 Use | for multiple IP’s
|
Path
|
Path of the website
|
/mywebsite/index.asp
|
POST
|
POST request method
|
Check data being uploaded to a website
|
Query
|
Name and value of a query, and can either accept the query name or a value also
|
"Best=jetNEXUS" Where the Match is Best and the Value is edgeNEXUS
|
Query String
|
The whole query string after the ? character
|
|
Request Cookie
|
Name of a cookie requested by a client
|
MS-WSMAN=afYfn1CDqqCDqUD::
|
Request Header
|
Any HTTP Header
|
Referrer, User-Agent, From, Date
|
Request Version
|
The HTTP version
|
HTTP/1.0 OR HTTP/1.1
|
Response Body
|
A user defined string in the response body
|
Server UP
|
Response Code
|
The HTTP code for the response
|
200 OK, 304 Not Modified
|
Response Cookie
|
The name of a cookie sent by the server
|
MS-WSMAN=afYfn1CDqqCDqUD::
|
Response Header
|
Any HTTP Header
|
Referrer, User-Agent, From, Date
|
Response Version
|
The HTTP version sent by the server
|
HTTP/1.0 OR HTTP/1.1
|
Source IP
|
Either the origin IP, proxy server IP, or some other aggregated IP address
|
Client
IP, Proxy IP, Firewall IP. Can also use multiple IP and subnets. You must escape the dots as these are RegEX. Example 10\.1\.2\.3 is 10.1.2.3
|
Match
The Match field can be either a drop-down or a text value and is definable depending on the value in the Condition field. For example, if the Condition is set to Host, the Match field is not available. If the Condition is set to <form>, the Match field is shown as a text field, and if the Condition is POST, the Match field is presented as a drop-down containing pertinent values.
Choices available are:
MATCH
|
DESCRIPTION
|
EXAMPLE
|
Accept
|
Content-Types that are acceptable
|
Accept: text/plain
|
Accept-Encoding
|
Acceptable encodings
|
Accept-Encoding: <compress | gzip | deflate | sdch | identity>
|
Accept-Language
|
Acceptable languages for response
|
Accept-Language: en-US
|
Accept-Ranges
|
What partial content range types this server supports
|
Accept-Ranges: bytes
|
Authorization
|
Authentication credentials for HTTP authentication
|
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
|
Charge-To
|
Contains account information for the costs of the application of the method requested
|
|
Content-Encoding
|
The type of encoding used
|
Content-Encoding: gzip
|
Content-Length
|
The length of the response body in Octets (8-bit bytes)
|
Content-Length: 348
|
Content-Type
|
The mime type of the body of the request (used with POST and PUT requests)
|
Content-Type: application/x-www-form-urlencoded
|
Cookie
|
A HTTP cookie previously sent by the server with Set-Cookie (below)
|
Cookie: $Version=1; Skin=new;
|
Date
|
Date and time at message was originated
|
Date = “Date” “:” HTTP-date
|
ETag
|
An identifier for a specific version of a resource, often a message digest
|
ETag: “aed6bdb8e090cd1:0”
|
From
|
The email address of the user making the request
|
From: user@example.com
|
If-Modified-Since
|
Allows a 304 Not Modified to be returned if the content is unchanged
|
If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
|
Last-Modified
|
The last modified date for the requested object, in RFC 2822 format
|
Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
|
Pragma
|
Implementation: Specific headers that may have various effects anywhere along the request-response chain.
|
Pragma: no-cache
|
Referrer
|
Address of the previous web page from which a link to the currently requested page was followed
|
Referrer: HTTP://www.edgenexus.io
|
Server
|
A name for the server
|
Server: Apache/2.4.1 (Unix)
|
Set-Cookie
|
A HTTP cookie
|
Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
|
User-Agent
|
The user agent string of the user agent
|
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
|
Vary
|
Tells downstream proxies how to match future request headers to decide
whether the cached response can be used rather than requesting a fresh
one from the origin server
|
Vary: User-Agent
|
X-Powered-By
|
Specifies the technology (e.g. ASP.NET, PHP, JBoss) supporting the web application
|
X-Powered-By: PHP/5.4.0
|
Sense
The Sense field is a drop-down Boolean field and contains either Does or Doesn't choices.
Check
The Check field allows the setting of check values against the Condition.
Choices available are: Contain, End, Equal, Exist, Have Length, Match RegEx, Match List, Start, Exceed Length
CHECK
|
DESCRIPTION
|
EXAMPLE
|
Exist
|
This does not care for the detail of the condition just that it does/doesn't exist
|
Host — Does — Exist
|
Start
|
The string starts with the Value
|
Path — Does — Start — /secure
|
End
|
The string ends with the Value
|
Path — Does — End — .jpg
|
Contain
|
The string does contain the Value
|
Request Header — Accept — Does — Contain — image
|
Equal
|
The string does Equal the Value
|
Host — Does — Equal — www.jetnexus.com
|
Have Length
|
The string does have a length of the value
|
Host — Does — Have Length — 16
www.jetnexus.com = TRUE
www.jetnexus.co.uk = FALSE
|
Match RegEx
|
Enables you to enter a full Perl compatible regular expression
|
Origin IP — Does — Match Regex — 10\..* | 11\..*
|
Steps to add a Condition
Adding a new flightPATH Condition is very easy. An example is shown above.
1. Click the Add New button within the Condition area.
2. Choose a condition from the drop-down box. Let's take Host as an example. You can also type into the field, and the ADC will show the value in a drop-down.
3. Choose a Sense. For example, Does
4. Choose a Check. For example, Contain
5. Choose a value. For example, mycompany.com
The above example shows that there are two conditions that both have to be TRUE for the rule to complete
· The first is checking that the requested object is an image
· The second checks whether the host in the URL is www.imagepool.com
Evaluation
The ability to add definable variables is a compelling capability. Regular ADC's offer this capability using scripting or command-line options that are not ideal for anyone. The ADC allows you to define any number of variables using an easy-to-use GUI, as shown and described below.
flightPATH variable definition comprises four entries that need to be made.
· Variable – this is the name of the variable
· Source – a drop-down list of possible source points
· Detail – select values from a drop-down or manually typed.
· Value – the value that the variable holds and can be an alphanumeric value or a RegEx for fine-tuning.
Built-in Variables:
Built-In variables have already been hardcoded, so you do not need to create an evaluation entry for these.
You can use any of the variables listed below in the Action section.
The explanation for each variable is located in the "Condition" table above.
· Method = $method$
· Path = $path$
· Querystring = $querystring$
· Sourceip = $sourceip$
· Response code (text also included “200 OK”) = $resp$
· Host = $host$
· Version = $version$
· Clientport = $clientport$
· Clientip = $clientip$
· Geolocation = $geolocation$”
ACTION
|
TARGET
|
Action = Redirect 302
|
Target = HTTPs://$host$/404.html
|
Action = Log
|
Target = A client from $sourceip$:$sourceport$ has just made a request $path$ page
|
Explanation:
· A client accessing page that does not exist would ordinarily be presented with the browser’s 404 Error page
· Instead, the user is redirected to the original hostname they used, but the incorrect path is replaced with 404.html
· An entry is added to the Syslog saying, "A client from 154.3.22.14:3454 has just requested the wrong.html page."
Action
The next stage in the process is to add an action associated with the flightPATH rule and condition.
In this example, we want to rewrite the path portion of the URL to reflect the URL typed by the user.
· Click Add New
· Choose Rewrite Path from the Action drop-down menu
· In the Target field, type in $path$/myimages
· Click Update
This action will add /myimages to the path, so the final URL becomes www.imagepool.com/myimages
Applying the flightPATH rule
The application of any flightPATH rule is made within the flightPATH tab of each VIP/VS.
· Navigate to Services > IP Services and choose the VIP to which you wish to assign the flightPATH rule.
· You will see the Real Server list shown below
· Click on the flightPATH tab
· Select the flightPATH rule you have configured or one of the pre-built ones supported. You can select multiple flightPATH rules if required.
· Drag and drop the selected set to the Applied flightPATHs section or click the >> arrow button.
· The rule will be moved to the right side and automatically applied.