EZproxy 4.0h contains the following changes:
Introduce the ability to perform user authentication against a SirsiDynix Horizon Information Portal 3.x server. See Horizon Information Portal 3.x Authentication for details.
In ezproxy.usr, added new IfQueryStringPass to test if the password was provided in the query string, making it possible to block when someone decides to submit their password in this manner instead of through the login form POST method. Sample use:
::Common
IfQueryStringPass; Deny loginbu.htm
/Common
This logic should appear as the first part of ezproxy.usr. As shown above, EZproxy will immediately send loginbu.htm, which is the normal behavior if a username/password is provided incorrectly. If you prefer, you can use a different file for Deny to provide the user with feedback indicating that this is not permitted.
EZproxy 4.0g contains the following changes:
Add new Timeout directive for LDAP authentication to specify the maximum amount of time in seconds that EZproxy should wait before giving up on an LDAP server to respond. Sample use:
::LDAP
BindUser CN=ezproxy,CN=users,DC=yourlib,DC=org
BindPassword verysecret
Timeout 10
URL ldap://ldapserv.yourlib.org/CN=users,DC=yourlib,DC=org?sAMAccountName?sub?(objectClass=person)
Unauthenticated; Stop
Timeout may appear anywhere after ::LDAP but before URL.
Add a new -ActiveIP qualifier for the AnonymousURL directive that specifies that the user may access a URL matching the AnonymousURL directive only if that user is also currently accessing from an IP address associated with an authenticated user. Sample use:
AnonymousURL -ActiveIP +http://www.somedb.com/*
Such access may fail if a user is accessing through a network that uses multiple proxy servers such as AOL.
Destination URLs in starting point URLs that are authorized through an AnonymousURL directive now provide immediate access. In previous versions of EZproxy, such URLs had to appear in rewritten form to work. For example:
AnonymousURL -RE +http://www.somedb.com/[^?]+\.rss
Title Some Database
URL http://www.somedb.com/
Domain somedb.com
would only have allowed a rewritten URL such as http://www.somedb.com.ezproxy.yourlib.org/feed.rss to be used by an RSS aggregator whereas this new version would also allow access if requested by http://ezproxy.yourlib.org/login?url=http://www.somedb.com/feed.rss
Adds Follett library system authentication. A sample entry for ezproxy.usr is:
::Follett
URL http://fsc.yourlib.org
/Follett
Adds Sagebrush InfoCentre library system authentication. A sample entry for ezproxy.usr is:
::Sagebrush
URL http://sagebrush.yourlib.org
/Sagebrush
EZproxy 4.0f contains the following changes:
Correct an issue in EZproxy 3.6i through 4.0e that can cause EZproxy to restart if it receives a particular URL from an IP address within an ExcludeIP address range. Sites running one of these versions of EZproxy that do not use the "/limited" directory can add:
IncludeIP 0.0.0.0-255.255.255.255
as the last line of ezproxy.cfg to avoid this possibility. Sites using EZproxy 3.6i through 4.0e that use the "/limited" directory are encouraged to update to EZproxy 4.0f.
Add the ability to generate SHA512 hashes of passwords for use in ezproxy.usr. Sample use from a command prompt or shell to generate a SHA512 hash:
ezproxy SHA512 testing
$021NGKBG$FTRoPxyZ1S2O2bJ5qRtlXcI/tKPXZRoaQojBFZKWOif0g5Fionk07Bo13fN2+a/kmL8w80VumtcA2m1ENEiT2A
Sample use in ezproxy.usr for this password:
someuser::SHA512=$021NGKBG$FTRoPxyZ1S2O2bJ5qRtlXcI/tKPXZRoaQojBFZKWOif0g5Fionk07Bo13fN2+a/kmL8w80VumtcA2m1ENEiT2A
::NCIP
AuthenticationInput user Barcode Id
AuthenticationInput pass PIN
Server ncip.yourlib.org
/NCIP
You can specify any number of AuthenticationInput directives. The first argument can be user, pass, or pin and specifies that the login form field user, pass, or pin should be used. The balance of the directive is the NCIP authentication input field and will most commonly be one of Barcode Id, PIN, Password, or User Id. In the absence of any AuthenticationInput directives, the user field is sent as Barcode Id and the pass field is sent as PIN.
The Cookie directive for pre-loading cookie values into a session is now affected by Group directives, allow different values to be pre-loaded based on group membership. Sample use:
Group Legal
Cookie somecookie=legal; domain=.somedb.com
Group Medical
Cookie somecookie=medical; domain=.somedb.com
Group Legal+Medical
Title Some Database
URL http://www.somedb.com
Domain somedb.com
In this example, if a user is a member of the Legal group, the cookie somecookie is pre-loaded with the value of legal, whereas if the user is a member of the Medical group, the cookie somecookie is pre-loaded with the value of medical. If the user is a member of both groups, the first Cookie directive that matches take precedence, so the cookie somecookie would have the value legal in this scenario.
EZproxy 4.0e contains the following changes:
Allow a certificate to be associated with database definitions to allow client authentication to remote databases. SSLCert with a certificate number should appear before the Title line of the first database definition that should be affected and SSLCert without a certificate number should appear before the Title line of the first databse definition where the certificate should no longer be sent. The certificate number can be found on the SSL administration page. Sample use:
SSLCert 5
Title Some Database that will receive the certificate
URL http://www.somedb.com
Domain somedb.com
SSLCert
Title Other Database that will not receive certificate
URL http://www.otherdb.com/
Domain otherdb.com
See Importing a PEM-formatted Certificate into EZproxy for information on how to import a certificate into EZproxy.
Extend IntruderIPAttempts to allow different limits based on source IP address. Sample use:
IntruderIPAttempts -IP=10.0.0.0-10.255.255.255 -Interval=5 -Expires=1 50
IntruderIPAttempts -Interval=5 -Expires=15 20
In this example, users accessing from a 10.* address will be given 50 attempts in a 5 minutes window and will be allowed to try again after 1 minute of being locked out, whereas all other IP addresses are given 20 tries within a 5 minute window and then locked out for 15 minutes.
Extend RADIUS authentication to allow the NAS port type and NAS port to be specified. To add the NAS port type, include a semi-colon (;) after the RADIUS server name (and UDP port) and then either the keyword virtual to specify the virtual port type or a numeric code for the port type as defined in the RADIUS RFC. To add the NAS port, include a semi-colon (;) after the NAS port type and include the port number. If you want to specify only a NAS port but not a port type, use two semi-colons (;) after the RADIUS server.
Sample use:
# Virtual port type, no NAS port specified
::RADIUS=radserv.yourlib.org;virtual,Secret=shhhh
# Virtual port type, NAS port 1
::RADIUS=radserv.yourlib.org:1645;virtual;1,Secret=shhhh
# No port type specified, NAS port 1
::RADIUS=radserv.yourlib.org:1812;;1,Secret=shhhh
Note that the :1645 and :1812 in these examples demonstrate including the UDP port for communication with the RADIUS server, which is completely different from the NAS port.
By default, ExcludeIPBanner only cause the banner to be sent once during a browser session. This behavior can now be modified to direct EZproxy to send the banner every time an exclude URL is accessed by adding the -Always option. Sample use:
ExcludeIPBanner -Always policy.html
EZproxy 4.0d contains the following change:
EZproxy 4.0c contains the following changes:
By default, when EZproxy performs external authentication, it looks for the "valid" string in both the header and body of the response from the remote web server. Starting with this release, the valid string can be prefixed with header: or body: to specify that EZproxy should only look in the header or the body. Sample use:
::External=http://www.yourlib.org/ezproxy.cgi,Post=user=^u&pass=^p,Valid=body:OK
EZproxy 4.0b contains the following changes:
Add support for EZproxy to transfer user authentication information to other systems for single sign-on. Sample ezproxy.cfg entry:
SSO -Secret=abcdefghijklmnopqrstuvw -URL=http://www.yourlib.org/sso.php abc
Example PHP scripts are available at phpsso.tar and example Perl scripts are available at perlsso.tar .
Add new PDFRefreshPre and PDFRefreshPost directives to alter the text that appears before and after the link that is generated when a starting point URL refers to a PDF document. Sample use with the default values is:
PDFRefreshPre To access this document, wait a moment or click <a href="
PDFRefreshPost ">here to continue
To make the link appear only in browsers that have JavaScript disabled, use:
PDFRefreshPre <noscript>To access this document, wait a moment or click <a href="
PDFRefreshPost ">here</a> to continue</noscript>
EZproxy will always insert the actual link between these two items, but if you want to override the link, you can use <!-- at the end of PDFRefreshPre and --> at the beginning of PDFRefreshPost to place the link into an HTML comment.
EZproxy 4.0a contains the following changes:
Add support for EZproxy to perform user authentication by testing a username and password against a URL that is protected by "HTTP basic" authentication. Sample use is:
::HTTPBasic=http://www.yourlib.org/secure/index.html
In this example, http://www.yourlib.org/secure/index.html should be a URL that normally sends a "401 authentication required" response, triggering a user's browser to display a username/password dialog box. If you provide a URL that does not require authentication, EZproxy will allow the use of any username and password, so this should be used with great care.
The "URL -form=(get|post) name url" form of database definition has been extended.
In FormVariable, if you specify a variable name but do not include an equal sign, this directs EZproxy to allow the user to specify a value in the URL that should be included when accessing the remote site. For instance:
Title Some Database
URL -form=get somedb http://www.somedb.com/search.cgi
FormVariable index=author
FormVariable term
allows the use of an EZproxy URL such as:
http://ezproxy.yourlib.org/login/somedb?term=Twain
to specify that EZproxy should take the value Twain and pass it on as the value of the term variable, resulting in a destination URL of:
http://www.somedb.com/search.cgi?index=author&term=Twain
"Option GroupInReferer" directs EZproxy to include the group that authorized access to a database definition should be included in the referring URL. This option should appear before the Title line of the database and may be later reversed with "Option NoGroupInReferer". For example, if a user in group Default accessed:
Option GroupInReferer
Title Some Database
URL -form=get somedb http://www.somedb.com/
the referring URL would be similar to:
http://ezproxy.yourlib.org/login/2/Default/somedb
# user1 may access starting January 1st, 2006 or later
user1:pass1:IfAfter=2006-01-01
# user2 may access up to to July 1, 2007, but not on or after
user2:pass2:IfBefore=2007-07-01
# user3 may access starting January 1st, 2006 and up to
# but not including August 1, 2006
user3:pass3:IfAfter=2006-07-01,IfBefore=2006-08-01
Allow authentication based on a username provided in a request header, such as would occur when using SiteMinder in front of EZproxy. Sample use in ezproxy.usr is:
::HeaderUser=SM-User
Add support for Siku Quanshu. The Siku Quanshu database should be defined like this:
Option UTF16
Title Siku Quanshu
URL http://skqs.yourlib.org
DJ skqs.yourlib.org
Option NoUTF16
replacing skqs.yourlib.org with the name of your Siku Quanshu server.
EZproxy 3.8a contains the following changes:
You can specify the source IP address to use when connecting to remote web servers on a user-by-user basis through ezproxy.usr. Sample usage:
::SourceIP=24.249.162.194
jdoe:secret
::File=users194.txt
::SourceIP=24.249.162.195
::File=users195.txt
In the above example, user jdoe and all the users in users194.txt would use 24.249.162.194 as the source IP for requests, but users from users195.txt would use 24.249.162.195.
The Interface directive can be used to assign specific source IP addresses for databases. An explicit Interface assignment in ezproxy.cfg takes priority over ::SourceIP. If you need to use Interface to modify LoginPort directives, you can use "Interface Any" before the first Title directive to insure that SourceIP will still function.
http://ezproxy.yourlib.org:2048/form?auth=opac&qurl=http%3a%2f%2fscholar.google.com%2fscholar
See also Creating Public Forms to Proxied Resources .
http://ezproxy.yourlib.org/login?url=http://www.somedb.com.ezproxy.yourlib.org
::IfURL=http://www.yourlib.org/*,DocsCustom=yourlib
to allow custom pages to be triggered based on the destination of
a starting point URL.
IfURL is a general condition that be combined with other ezproxy.usr
directives.
Add an ezproxy.usr option to associate a directory to users to allow custom versions of the files in the docs directory to be sent to remote users. For example, you can use the Auth test to associate incoming users to different files during login, such as:
::Auth=branch1,DocsCustom=dir1
::Auth=branch1,File=branch1.usr
::Auth=branch2,DocsCustom=dir2
::Auth=branch2,File=branch2.usr
to indicate that if EZproxy sees Auth=branch1 in an incoming login URL, it should look for files such as login.htm in the docs/custom/dir1 directory first, and if it does not find a copy of the file, then it should look in docs. to indicate that if EZproxy sees Auth=branch1 in an incoming login URL, it should look for files such as login.htm in the docs/custom/dir1 directory first, and if it does not find a copy of the file, then it should look in docs. to indicate that if EZproxy sees Auth=branch1 in an incoming login URL, it should look for files such as login.htm in the docs/custom/dir1 directory first, and if it does not find a copy of the file, then it should look in docs. If the user logs in successfully, the DocsCustom is transferred to the user session, allowing EZproxy to continue to look for custom versions of files such as menu.htm and error messages.
The obscure feature has a flaw that prevents it from working consistently. This is corrected in EZproxy 4.0b. Using this feature in versions prior to 4.0b is not recommended.
Add the ability to obscure the password used for BindPassword. To create the obscured version of a password, invoke EZproxy with obscure and the password, such as:
ezproxy obscure somepassword
In ezproxy.usr, insert the obscured value into the LDAP configuration like this:
BindPassword -Obscure MVpJRjDh6AhGYy72LMGYKnoAL06r
Obscured passwords are case-sensitive, so copy the value exactly as it appears from the ezproxy obscure command.
EZproxy 3.6i contains the following changes:
Option TicketIgnoreExcludeIP
Add "IP" as a condition that can be tested in CAS, NCIP, ODBC, and Shibboleth (in ezproxy.usr for the first three and shib.usr for the last). IP accepts one or more ranges and tests true if the remote user is accessing from one of the addresses. Sample use:
IP 192.168.0.0-192.168.1.255:192.168.5.0-192.168.5.255; Group +Medical
In this example, if the user is accessing from an address that starts 192.168.0, 192.1, or 192.168.5, the user is also added into the Medical group.
You can place "Not " in front of IP to check that the user is not accessing from one of the addresses, such as:
Not IP 192.168.0.0-192.168.1.255; Group +Remote
EZproxy 3.6h contains the following changes:
EZproxy 3.6g contains the following change:
EZproxy 3.6f contains the following changes:
AutoLoginIP -user=main 68.14.0.0-68.14.1.255
AutoLoginIP -user=science 68.14.2.0-68.14.2.255
Corrects cookie handling issue that prevented Lexis-Nexis HK from working correctly. Also introduces new "Option NoHttpsHyphens" and "Option HttpsHyphens" directives which can appear before and after a database definition to tell EZproxy not to change periods to hyphens for specific databases when using a wildcard certificate. Sample usage:
Option NoHttpsHyphens
Title LexisNexis Hong Kong
URL http://www.lexisnexis.com/hk
DJ lexis-nexis.com
DJ lexisnexis.com
DJ lexis.com
DJ cispubs.com
HJ web.lexis-nexis.com
HJ web.lexisnexis.com
HJ www.lexis-nexis.com
HJ www.lexisnexis.com
DJ lexisnexis.com.au
DJ lexisnexis.com.hk
Find GetCookie("LNAUTH")
Replace "LNAUTH-IP"
Find NAME="_PRIORREFERER" VALUE="http://
Replace NAME="_PRIORREFERER" VALUE="http://^A
Option HttpsHyphens
# Databases from here on will have the normal change of
# periods to hyphens in https hostnames
Add "IgnorePassword" directive to LDAP. This option is appropriate when you have authenticated the user through another system, and want to access LDAP solely to make authorization decisions, such as might occur when using Blackboard or CAS authentication. This option must appear before the URL line and should be used with great care. This sample demonstrates a configuration where you are using the EZproxy Blackboard Building Block for full integration of login, where you all allow alumni to use Blackboard so they are able to authenticate, need to filter out alumni from accessing EZproxy, LDAP knows about the alumni status, but nothing is testable in Blackboard.
*** ezproxy.usr ***
::Ticket,File=filter.usr
SHA1 sharedsecret
/Ticket
*** filter.usr ***
::LDAP
IgnorePassword
URL ldap://ldapserv.yourlib.org/DC=yourlib,DC=org?uid?sub?(objectClass=person)
Test eduPersonAffiliation alum; Deny alum.html
/LDAP
EZproxy 3.6e contains the following changes:
EZproxy 3.6d contains the following changes:
EZproxy 3.6c contains the following changes:
Added new auditing facility, enabled with ezproxy.cfg directive Audit such as:
Audit Most
to have most events audited. See Audit for detailed information on this directive.
LoginPort and LoginPortSSL now accept a -Virtual qualifier to direct EZproxy to act as though it uses one set of ports when it is actually using another, simplifying the placement of EZproxy behind proxy servers and some network address translation servers. Sample usage:
LoginPort -Virtual 80
LoginPort 8080
LoginPortSSL -Virtual 443
LoginPortSSL 8443
In this configuration, EZproxy will act as though it using port 80 for https and port 443 for https, but will only list for such requests on ports 8080 and 8443.
Scripts that are called through the ::External method can now respond with:
ezproxy_deny=somefile.htm
This directs EZproxy to deny the user access and to look in the docs subdirectory for a file named somefile.htm which is sent to the remote user to specify why access is being denied.
Added ability to specify different sesion lives through ezproxy.usr, particularly to allow shorter session lifetime for temporary sessions created by metasearch products. Sample use:
::Lifetime=5
metauser:metapass
::Lifetime=0
# The rest of ezproxy.usr ...
In this example, any session created for "metauser" expires after 5 minutes, instead of the normal expiration which defaults to 120 minutes. The ::Lifetime=0 tells EZproxy to apply the system default to anyone who logs in with information that appears further on in ezproxy.usr.
Change ::CGI redirect to allow use of ^R to include a URL-safe reference to the destination URL, which can simplify the preservation of the destination URL as it passed through a remote CGI script.
cgiuser:cgipass:CGI=http://www.yourlib.org/ezproxy.cgi?url=^R
Add ::Comment to ezproxy.usr to allow inclusion of arbitrary comments into Login.Success audit records. For example:
::Comment=Student FTP
::FTP=student.yourlib.org
::Comment=Employee FTP
::FTP=employee.yourlib.org
Add new option to allow the username to be included with the htm files served from the docs subdirectory. To enable this, add:
Option Username^N
to ezproxy.cfg and restart. After that, you can insert ^N in the various .htm files to have EZproxy include the username of the logged in user when it sends the file. Given the privacy implications, this option should be used with care.
Add AddUserHeader directivive to have EZproxy include a header containing the current user's username when proxying to a database. Format:
AddUserHeader -base64 headername
The -base64 is an optional qualifier to indicate that the username should be encoded in base64.
This directive is position-dependent, allowing its use to vary by database. For example:
AddUserHeader X-User
Title Some Database
URL http://www.somedb.com
Domain somedb.com
AddUserHeader X-Username
Title Other Database
URL http://www.otherdb.com
Domain otherdb.com
Title Another Databse
URL http://www.anotherdb.com
Domain anotherdb.com
AddUserHeader
Title Yet Another Database
URL http://yanotherdb.com
Domain yanotherdb.com
In this example, Some Database receives the X-User header, Other Database and Another Database receive the X-Username header, and Yet Another Database does not receive any header at all.
Sample usage:
::SIP
Host sip.yourlib.org:1234
NoPatronPassword
SIP
Test 0 Y; Unknown
/SIP
Alter Ticket authentication to allow users to be designed as EZproxy administrators by specifiying the new Admin directive. Sample usage:
::Ticket
MD5 verysecret
User someuser; Admin
/Ticket
In this example, if the username provided is someuser, then EZproxy will grant the user administrative access.
Extends ODBC support to allow the use of Debug to have more diagnostic information included and allows the use of additional SQL command to set connection state. For example:
::ODBC
Debug
DSN SomeSystemDSN
DBUser SomeUser
DBPassword SomePassword
SQL USE SomeDatabase
Parameter User
Parameter Password
SQL \
SELECT 'Allow' \
FROM auth \
WHERE \
user = ? AND \
pass = ?
/ODBC
Adds new ezproxy.cfg option to instruct EZproxy to use a different method to set its cookie when users access using Apple's Safari 2.0 browser. This option is only needed for EZproxy server's whose names end in a two-letter domain and whose names contain only two periods (e.g., ezproxy.yourlib.ca would need this, but ezproxy.library.yourlib.ca and ezproxy.yourlib.org would not). To enable this, add:
Option SafariCookiePatch
to ezproxy.cfg and restart.
Extends Central Authentication Service (CAS) to allow varied behavior based on attributes provided during service validation. This form uses a new syntax to invoke CAS authentication. The minimal entry in this new form is:
::CAS
LoginURL http://www.yourlib.org/cas/login
ServiceValidateURL http://www.yourlib.org/cas/serviceValidate
/CAS
This form also supports the general directives Admin, Allow, Authenticated, Banner, Debug, Deny, Group, Invalid, NoGroups, Refused, Stop, Unknown, User, and UsrVar, plus a specialized version of Test to check tag values using an XPath to specify the tag to check. For example:
::CAS
Debug
LoginURL http://www.yourlib.org/cas/login
ServiceValidateURL http://www.yourlib.org/cas/serviceValidate
Group NULL
Test -RE cas:group (Undergrad|Grad); Group +Student
Test //*/cas:group Employees; Group +Employee
Test /cas:authenticationSuccess/cas:groups/cas:group Staff; Group +Staff
NoGroups; Deny unaffiliated.html
/CAS
For this example to work, ezproxy.cfg would need to default the Student, Employee, and Staff groups as well.
When EZproxy redirects through CAS encoding, the destination database URL is now encoded in a different manner, a side-effect of which is that you can no longer readily view the URL that arrives at the CAS server and determine where the user was originally headed.
The Debug directive tells EZproxy to record additional diagnostic messages to ezproxy.msg. This includes recording the entire XML response from the Service Validation URL, which can help in sorting out which attributes are available to use for making authorization decisions.
In all three tests, the tag cas:group is being tested. The first and second tests use an identical search to locate tags, as EZproxy assumes a search from the root across all nodes if no path infomation is included. The third test uses an absolute path to the tag.
The public, limited, and loggedin directories now allow the use of subdirectories if:
Option AllowWebSubdirectories
is added to ezproxy.cfg.
The behavior for loggedin is slightly different, as the first directory level is matched up with EZproxy groups, such that a URL like:
http://ezproxy.yourlib.org:2048/loggedin/somegroup/somedir/somefile.html
can only be retrieved by someone who is a member of the EZproxy group "somegroup".
When users access EZproxy using AutoLoginIP or referring URL authentication, EZproxy now appends a hyphen and the user's source IP address to the username used for limit tracking. For example, auto- instead of just auto. This makes it possible to enforce limits at the workstation level for automatic login and the user level for all other access.
In addition, Usage limits have new -IgnoreAutoLoginIP, -IgnoreRefererLogin, and -IgnoreNormalLogin options to exclude certain types of logins from participating in those limits. For example:
UsageLimit -enforce -interval=60 -expires=360 -MB=100 -IgnoreAutoLoginIP Global
enforces a limit of 100 MB transferred within a 60 minute window, with automatic expiration after 360 minutes, but ignores any access that occurs as a result of AutoLoginIP.
jdoe:secret
::ReLogin=30
rsmith:shhhh
::ReLogin=60
::FTP=ftpserv.yourlib.org
::ReLogin=0
pwilliams:hush
In this example, jdoe and pwilliams are never required to reauthenticate, rsmith is required to reauthenticate every 30 minutes, and users authenticated by the FTP server are required to reauthenticate every hour.
::LDAP
URL ldaps://ldapserv.yourlib.org/OU=users,O=yourlib?cn?sub?(objectClass=person)
Disabled; Deny disabled.html
Expired; Test -wild loginGraceRemaining 0; Deny expired.html
Expired; Test loginGraceRemaining 1; Deny expired.html
Expired; Test loginGraceRemaining 2; Deny expired.html
Expired; Banner grace.html; Ignore
/LDAP
In this example, the file grace.html is located in the docs subdirectory
and should contain information to the user to indicate that they only
have a few logins left. The file must also contain a link like this:
<a href="/login?url=^V">continue to resource</a>
If you do not want to provide feedback, you can omit the Banner portion but
must include Ignore or else EZproxy will not allow the user to log in.
EZproxy 3.6b was released but withdrawn. Any site using this version should update to a newer release of EZproxy.
EZproxy 3.6a was released but withdrawn. Any site using this version should update to a newer release of EZproxy.
EZproxy 3.4c corrects an issue introduced in EZproxy 3.4a that prevented concurrent user login limits from working properly.
This release was a flawed attempt to correct an issue in EZproxy 3.4a.
EZproxy 3.4a contains the following changes:
::debug,external=http://www.yourlib.org/ezproxy.cgi,post=user=^u&pass=^p
::SIP
Host sip.yourlib.org:23
Expect Choice
Send SIP\r
Wait 1
SIP
/SIP
Title Text that appears in /status but not to remote user
Description HTML Text sent to the remote user
Description which may span multiple lines by repeating
Description the Description directive
HTTPMethod SEARCH
HTTPMethod SUBSCRIBE
HTTPMethod BMOVE
ExtraLoginCookie proxyid=1025; domain=.yourlib.org
CookieFilter proxyid
Option LawYeePatch
Title LawYee
URL http://big5.lawyee.com/
DJ lawyee.com
Pat Smith
Smith Patricia
Smith
Jones
Robin Jones
Pattie Smith
Note that Pattie Smith matches, even though Pattie is not present, since Smith is present and does match.
When performing this test, Jr and Sr are ignored. Unless pn is made up of only single characters, single characters are also ignored. As a result, these by themselves would not match:
Jr
Q
To use this form of name match, add the directive PartialNameMatch before
your Host line, such as:
::III
PartialNameMatch
Host iii.yourlib.org
/III
LDAP now supports detecting expired accounts and expired password when authenticating against Microsoft Active Directory and Novell eDirectory.
The following examples demonstrate the use of the Expired and PasswordForm directives with a Microsoft Active Directory server. For Novell eDirectory, add the Expired and PasswordForm directives in a similar manner within your existing LDAP configuration, with Expired appear after the URL line and PasswordForm appearing before the URL line. If you are using eDirectory and anonymous searching is permitted, you can omit the BindUser and BindPassword in both examples.
To provide user feedback if a user's account or password is expired, use:
::LDAP
BindUser CN=ezproxy,CN=users,DC=yourlib,DC=org
BindPassword verysecret
URL ldap://ldapserv.yourlib.org/CN=users,DC=yourlib,DC=org?sAMAccountName?sub?(objectClass=person)
Expired; Deny expired.htm
/LDAP
In this example, you need to create the file expired.htm in the docs directory. This file will provide the user with feedback as to why he/she was denied access.
If you would like to allow the user to change an expired password, issue the command:
ezproxy -ml
to create the file ldappass.htm in the docs directory, then use an LDAP
entry like this:
::LDAP
PasswordForm ldappass.htm
BindUser CN=ezproxy,CN=users,DC=yourlib,DC=org
BindPassword verysecret
URL ldaps://ldapserv.yourlib.org/CN=users,DC=yourlib,DC=org?sAMAccountName?sub?(objectClass=person)
Expired; Deny expired.htm
/LDAP
Note the use of ldaps:// in this example. For password changing to work, you must use ldaps (LDAP over SSL). Both Active Directory and eDirectory require this. See Microsoft articles 247078 and 321051 for more information on configuring Active Directory to support ldaps.
Note that the CN=ezproxy... account does not need to have any privileges for password changing to work. It is only used to locate the user's distinguished name in the directory.
In this version, the user will be allowed to change his/her password as long as it is only the password that is expired. If the account has passed its expiration date, the expired.htm file is sent to let the user know that his/her account has expired and is now disabled.
Test p96 >d 20.00; Deny excessfines.htm
::LDAP
URL ldap://ldapserv1.yourlib.org/DC=yourlib,DC=org?uid?sub?(objectClass=person)
Refused; URL ldap://ldapserv2.yourlib.org/DC=yourlib,DC=org?uid?sub?(objectClass=person)
Refused; URL ldap://ldapserv3.yourlib.org/DC=yourlib,DC=org?uid?sub?(objectClass=person)
/LDAP
Other LDAP directives may appear before the closing /LDAP, and will apply based on whichever server was able to accept the request and process it.
EZproxy 3.2b contains the following changes:
Allows ::cgi to be specified without a username on the line when used just for rerouting, and also allows the use of ^U and ^V in the destination URL. Typical use for excluding the username occurs when combining ::cgi to reroute unauthenticated user with ticket authentication.
The inclusion of ^L, ^S, ^U or ^V overrides the normal appending of the destination URL and instead provides the ability to explicit pick where the destination URL should be inserted. When used, ^U is the URL-encoded version of the URL and ^V is the verbatim version of the URL with no encoding.
^L is true if the user is already logged in and tries to access a database outside current group membership (a "logup" condition) or false otherwise. If the user tries to access a database outside group membership and ^L isn't included in the redirect URL, then EZproxy will not redirect the user, but instead presents the logup.htm page. This requriement avoids the possibility of user login loops if the receiving CGI script is not designed to handle the logup scenario.
^S is the EZproxy session identifier if the user is already logged in.
For the starting point URL:
http://ezproxy.yourlib.org/login?url=http://www.somedb/com/
if you use the ezproxy.usr entry:
::cgi=http://www.yourlib.org/ezpauth.cgi?dest=^U
the user will be redirected to:
http://www.yourlib.org/ezpauth.cgi?dest=http%3a%2f%2fwww.somedb.com%2f
whereas if you use the ezproxy.usr entry:
::cgi=http://www.yourlib.org/ezpauth.cgi?dest=^V
the user will be redirected to:
http://www.yourlib.org/ezpauth.cgi?dest=http://www.somedb.com/
./ezproxy stopall
Test -user rdoe; Admin
EZproxy 3.2a contains the following changes.
LoginSocketBacklog 50
HostSocketBacklog 10
In proxy by port, LoginSocketBacklog controls the number of unserviced login requests that can be pending, and HostSocketBacklog controls the number of unservice requests to specific virtual web servers can be pending. In proxy by hostname, only LoginSocketBacklog matters.
In older versions of EZproxy, these defaulted to 5. The default for LoginSocketBacklog is now 20 and for HostSocketBacklog remains 5. Raising LoginSocketBacklog above 200 is not recommended, nor is raising HostSocketBacklog above 20.
::III
PartialNameMatch
Host iii.yourlib.org
/III
PartialNameMatch must appear before Host.
DenyIfRequestHeader denyfile wildcardtest
where denyfile is a file in the docs subdirectory to send if
wildcardtest is present in a header. Sample usage is:
DenyIfHeader nowebzip.html User-Agent:*WebZip*
The denyfile may also take the special value of allow
to indicate that a specific header should
combination of positive and negative logic.
Adds new ezproxy.cfg directive ClientTimeout that controls how long EZproxy will wait on the remote client (in seconds) before closing a connection. The default value is 60 seconds. This directive should be used with RemoteTimeout or else a long wait on the client could cause the connection to the remote server to timeout.
Sample usage:
ClientTimeout 120
RemoteTimeout 120
LogFile -strftime ezproxy%Y%m%d.log
When strftime is present, EZproxy will evaluate the filename using the
strftime function. This allows the filename to be based on the current
date and time, allowing new log files to be created automatically. In
the above example, EZproxy will open a new log file every day, using names
such as ezproxy20080818.log for each file. Another useful
form is:
LogFile -strftime ezproxy%Y%W.log
which create a new log file each week such as ezproxy200833.log.
LogFormat %h %l %u %t "%m %{ezproxy-protocol}i://%v HTTP/1.0" %s %b
These options are also compatible with LogSPU.
Add new ezproxy.cfg directive RADIUSRetry that controls how frequently EZproxy will resend RADIUS requests if it does not receive any responses. The directive is followed by the number of seconds to wait before retrying, and defaults to 1 second.
Sample usage:
RADIUSRetry 3
The IntruderAttempts directive has been expanded. You can now include multiple directives to provide varying behavior based on source IP address.
Sample usage:
IntruderTimeout 600
IntruderAttempts 5
IntruderTimeout 300
IntruderAttempts -ip=68.14.229.0-68.14.229.255 10
IntruderAttempts -ip=68.14.229.198 -x-forwarded-for 15
IntruderAttempts statements should be listed from most general to most specific. The last IntruderAttempts line in ezproxy.cfg that matches a computer defines how intruder detection will be handled.
In this example, the general behavior is to start evading users after they make 5 login failures from the same IP address. Once this occurs, the source IP remains locked out for 600 seconds (10 minutes).
However, if someone is accessing from a source IP between 68.14.229.0 and 68.14.229.255, EZproxy will give them 10 tries and will reset after 300 seconds (5 minutes).
But, even more specifically, if someone is accessing from 68.14.229.198, EZproxy should look for an "X-Forwarded-For" header, and if one is present, it should consider the source IP address of the request to include the source IP specified in this header, and in that case, allow up to 15 retries. The X-Forwarded-For header is an optional header that can be sent by proxy servers and some network address translation devices. Including this option enables EZproxy to use an extra piece of information to separate out users who are behind that proxy. This option should only be used if your institution controls the proxy server involved.
There is a new form of database definition that can be used for databases that require the submission of variables by a form. With this configuration, EZproxy generates a temporary form used to give the user access to the remote system.
An example of this configuration for Canadian Pharmacists Association is:
Title Canadian Pharmacists Association
URL -Form=post -RewriteHost ecps http://www.pharmacists.ca/function/subscriptions/ecps.cfm?extlink=ecps
FormVariable loginname=someuser
FormVariable loginpassword=somepass
DJ pharmacists.ca
Users gain access to this with a URL similar to:
http://ezproxy.yourlib.org:2048/login/ecps
IntruderAttempts handling has been enhanced.
Introduces new intrusion control directives:
IntruderLog 25
IntruderReject 100
IntruderLog controls the maximum number of times that EZproxy should log intrusion attempts to ezproxy.msg during a particular incident, with a default value of 25.
IntruderReject controls the maximum number of login failures that should occur before the remote site moves from evasion to total rejection of login attempts, with a default value of 100.
The maximum number of groups has been increased from 32 to 4096.
The Validate directive may now include a path restriction to control which URLs receive a username and password.
Sample usage:
Title Journal of Transpersonal Psychology
Validate path=/jtparchive/* someuser:somepass
URL http://www.atpweb.org/jtparchive/
Domain atpweb.org
::ODBC
DSN SomeSystemDSN
DBUser SomeUser
DBPassword SomePassword
Parameter User
Parameter Password
SQL \
SELECT 'Allow' \
FROM auth \
WHERE \
user = ? AND \
pass = ?
/ODBC
DSN is the ODBC system DSN to use.
DBUser and DBPassword are optional. If includes, they provide the username and/or password to use to access the database.
Parameter may be followed by User, Password, or IP and indicate values that should be supplied for each ? that appears in the SQL statement. The first Parameter value goes to the first ? in the SQL statement, the second Parameter to the second ?, and so forth.
SQL is followed by an SQL statement. Since SQL statements may become quite long, you may continue SQL statements across multiple lines by ending each line with a \ character. The SQL statement should be constructed to return the literal Allow if the user is to be allowed access, Deny if the user should be denied all access to EZproxy. If the first value returned is neither Allow or Deny, EZproxy moves on to the next authentication check in ezproxy.usr.
For Allow, the SQL statement may also return a second column that indicates one or more EZproxy groups to which the user should have access. To use the group feature, the query should return several rows with one group per row, such as:
| Allow | Default |
| Allow | Medical |
| Allow | Legal |
For Deny, the SQL statement may also return a second column that indicates the name of the file from the docs directory that should be sent to the user who is being denied access. To use this feature, the query should return a something like this:
| Deny | alumni.html |
It is now possible to configure EZproxy to look for a meta directive tht tells it to stop rewriting URLs within a web page.
In ezproxy.cfg, you indicate to EZproxy which databases should use this directive like this:
Option MetaEZproxyRewriting
Title Some Database that can use this meta tag
URL http://www.somedb.com/
Domain somedb.com
Option NoMetaEZproxyRewriting
Title Other Database that will ignore the meta tag
URL http://www.otherdb.com/
Domain otherdb.com
The default behavior is Option NoMetaEZproxyRewriting.
If Option MetaEZproxyRewriting is set for a database, then web pages from that database may contain these special tags:
<meta name="EZproxyRewriting" content="disable">
<meta name="EZproxyRewriting" content="enable">
which tell EZproxy at which points URL rewriting should be disabled or enabled as the web page is processed.
Domain statements that match a broad range of hosts such as:
Domain *
Domain com
Domain ac.uk
are now disallowed by default as these are outside the scope of EZproxy's design to handle and they pose security risks when enabled.
Sites that choose to ignore this risk do so without the support of Useful Utilities. To enable such lines to be proxied, the very first line of ezproxy.cfg must be set to exactly:
Option I choose to use Domain lines that threaten the security of my network
::NCIP
Server ncip.yourlib.org:7777
/NCIP
With just a hostname and port, EZproxy uses the socket protocol to connect
to NCIP. These may be replaced by a URL to use http or https POST protocol.
Group InHouse Deny=inhouse.html
Title Some Database for local use only
URL http://www.somedb.com
Domain somedb.com
Group Default
Title Other databases follow
...
In this example, Some Database is placed in the InHouse group, and the
custom error file inhouse.html is associated with it. As long as your
users are never placed in the InHouse group, they will never have access to
this database, and will receive the inhouse.html file. Users who access
from an ExcludeIP address are redirected to the resource.
Automatic login can be enabled based on the reverse DNS hostname associated with an IP address. This method of authentication is prone to spoofing. Recommended use includes limiting the source IP range as well.
Sample usage:
::ip=68.14.0.0-68.14.255.255,hostname=*.something.somedomain.com
::hostname=*.otherdomain.com
In the first example, the source IP address must be in the specified IP range before the hostname test is considered. In the second, the hostname is checked regardless of source IP address.
LogSPU spu.log %h %{ezproxy-spuaccess}i %u %t "%r" %s %b
The %{ezproxy-spuaccess} is a special variable that will record either
proxy (user's access to remote URL will be proxied), local (user is
within an ExcludeIP address and will be redirected to URL without being
proxied), or unknown (URL was not recognized by EZproxy and Option RedirectUnknown appears in ezproxy.cfg).
LogSPU must be followed by a filename, and can optionally be followed by a log format. LogSPU can appear more than once in ezproxy.cfg, with different formats possible for each file. As of this release, each LogSPU must reference a different file.
::iii
Host iii.yourlib.org
Type 1,2,3,4,5; UsrVar 1 Student
Type 6,7,8; UsrVar 1 Faculty
/iii
The number after UsrVar can be any digit 0 to 9. All UsrVar values
default to blank.
To record this variable in ezproxy.log, use a LogFormat similar to:
LogFormat %h %l %u %t "%r" %s %b %{ezproxy-usrvar1}i
Option MenuByGroups
to ezproxy.cfg and restart EZproxy.
test -user someuser
test -wild -user somewildcarduser
test -auth authvalue
test -wild -auth somewildcardauthvalue
as a way to test the values from the user and auth variables of the
login form.
ServerHeader server-identifier
By default, EZProxy sends the EZproxy as its server identifier. If you
specify ServerHeader with no server-identifier, this header is omitted. i
Otherwise, EZproxy uses server-identifier in this header.
Option IgnoreWildcardCertificate
When EZproxy is running in proxy by hostname with SSL enabled and with
a certificate that starts with an asterisk (*), EZproxy normally
adds "login." to the front of its hostname when it constructs URLs
that point to itself. Adding this directive tells EZproxy not to
override this behavior.
This directive is mainly useful in instances where an EZproxy server is named something similar to ezproxy.yourlib.org and you want to use a certificate named *.yourlib.org.
Add a "-hide" qualifier to the Title directive to indicate that a database definition should not appear when automatically generating the menu. Sample use:
Title -hide Some Database that will not appear in menu
EZproxy 3.0f contains the following changes.
Test -wild attribute wildcardvalue
where wildcardvalue can use the * wildcard to match 0 or more characters.
When Test is used without -wild, EZproxy only needs compare access to the directory. When -wild is present, EZproxy needs read access to the directory.
EZproxy 3.0e contains the following changes.
user1::deny=locked.htm
from an included file.
EZproxy 3.0d GA (2004-08-30) corrects a problem when using "ezproxy log" on Microsoft Windows Terminal Services, allows EZproxy to rewrite URLs that contain line breaks (HeinOnline), and corrects for relative URLs that start ../ in redirects.
EZproxy 3.0c GA (2004-08-05) corrects an issue that caused the combination of auth and old-style LDAP authentication in the same line in ezproxy.usr to cause EZproxy to ignore other sections of ezproxy.usr.
EZproxy 3.0b GA (2004-08-04) corrects an issue that prevented wildcards from working properly in Domain/DomainJavaScript statements.
This release corrects a similar issue for the new NeverProxy statement. In ezproxy.cfg, you can now add lines like this:
NeverProxy www.somedb.com
NeverProxy www.somedb.com:8080
NeverProxy *.somedb.com
The first line tells EZproxy never to rewrite the hostname www.somedb.com. The second tells EZproxy never to rewrite www.somedb.com:8080, but rewrite any other www.somedb.com references. The third line tells EZproxy never to rewrite any hostname that ends in .somedb.com.
EZproxy 3.0a GA (2004-08-02) contains the following changes:
EZproxy now supports intruder detection. See IntruderAttempts for information on how to configure this feature.
Sample usage:
P3P CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"
In DRAWeb2 authentication, the setup process provides files for use with class DRA_ macros as well as newer WEB2_ macros.
Also, you can now specify the userid field that EZproxy should use when it verifies someone's access using the new userid directive.
Sample usage:
::draweb2
userid alt_user_id
url http://draweb2.yourlib.org/Web2/tramp2.exe/log_in?SETTING_KEY=guest&screen=ezp1.html
/draweb2
EZproxy previously imposed stringent checks on the user and password information used by Web2, which lead to information that is valid for Unicorn systems being locked out. These restrictions have been changed to accomodate the broader range of options supported by Unicorn.
This next section applies only to the traditional LDAP configuration in ezproxy.usr, not the new LDAP functionality triggered by just ::LDAP. If required, EZproxy can still present a certificate for outgoing LDAP connections. In ezproxy.usr, use an entry similar to this:
::ssl=2,ldap=pdc.yourlib.org,$U@yourlib.org
where "2" is the number of the certificate for EZproxy to present in the
outgoing request.
RemoteTimeout 120
In this example, the timeout is raised from 60 seconds to 120 seconds.
The following deny option has flaws and is under review for possible changes. If you need this type of functionality, please contact support@oclc.org to discuss options. This option does not work correctly from an included file.
When using deny in ezproxy.usr, you can now include a filename to present to the user, such as:
user1::deny=expired.html
In this example, the expired.html file would need to be placed in the docs subdirectory.
Title ebooks.com
EncryptVar u astringyoupick
URL http://www.curtin.eblib.com/EBLWeb/patron.html?userid=^u&usertype=student
In addition, the EZproxy /admin menu displays a new "Decrypt User Variable"
option whenever EncryptVar appears in ezproxy.cfg. This option allows the
EZproxy administrator to enter an encrypted value and see what the original
plain-text value was.
EZproxy 2.4e GA (2004-05-12) contains the following changes:
EZproxy 2.4d GA (2004-04-09) contains the following changes:
EZproxy 2.4c GA (2004-03-21) contains the following changes:
Option RelaxedRADIUS
This tells EZproxy not to verify the source IP address for RADIUS
responses, but rather to just look at the received packet to check
whether or not a valid response has been returned.
Title Foot and Ankle International
URL http://www.datatrace.com/e-chemtracts/emailurl.html?http://www.newslettersonline.com/user/user.fas/s=563/fp=20/tp=37?T=open_non_issue,5167,3&P=non_issue
DJ datatrace.com
DJ newslettersonline.com
Find location.href="' + idOrUrl
Replace location.href="^p^/login?url=' + idOrUrl
RerouteTo http://otherezp.yourlib.org/login?url=
RerouteHost www.somedb.com
RerouteDomain otherdb.com
The RerouteTo statement appears before any RerouteHost and RerouteDomain statements. The string specified in RerouteTo is placed in front of the URL that was specified in the starting point URL, then the user is redirected. RerouteTo can be omitted, in which case the other Reroute statements would effectively tell EZproxy to reroute starting point URLs of those domains to the regular URL.
RerouteHost indicates that any host name that exactly matches the specified host name should be rerouted, whereas RerouteDomain indicates that any host names that exactly matches or ends with the domain specified should be rerouted.
RerouteTo can also take the form:
RerouteTo -quote http://www.yourlib.org/script.cgi?dest=
With the -quote added, it tells EZproxy to apply URL encoding to the URL,
making it suitable to be directly passed under normal CGI semantics
(e.g., http://ezproxy becomes http%3a%2f%2fezproxy if -quote is
present).
ezproxy_menu=menufile.htm
where menufile.htm specifies the menu that should be
presented to the user after login.
EZproxy 2.4b GA (2004-02-15) contains the following changes:
Option RequireAuthenticate
to ezproxy.cfg allows you to configure individual machines to present the EZproxy login
for starting point URLs, even if their IP addresses fall within AutoLoginIP or ExcludeIP address ranges.
Once you have added the option line and restarted EZproxy, you can force the presentation of the login page using a URL similar to:
http://ezproxy.yourlib.org:2048/auth
This page allows you to enable or disable this behavior, either for the balance of your browser session
(useful for quick testing or perhaps information literacy instruction sessions) or "permanently." Since
this feature uses a cookie, it can be undone if the cookie is removed, so it is not something you can count on to
work indefinitely, but it can be useful in situations where machines receive their addresses by DHCP and cannot
be identified by specific, static IP addresses for this purpose.
Sample usage:
Option ProxyFTP
Title Some database where FTP URLs will be proxied
URL http://www.somedb.com
Domain somedb.com
Option NoProxyFTP
Title Other database where FTP URLs will not be proxied
URL http://www.otherdb.com/
Domain otherdb.com
Title Another database where FTP URLs will not be proxied
URL http://www.anotherdb.com/
Domain anotherdb.com
Sample use:
Option X-Forwarded-For
Title Some Database
URL http://www.somedb.com
Domain somedb.com
Option NoX-Forwarded-For
# No databases after this point will send the X-Forwarded-For header
Title Other Database
URL http://www.otherdb.com
Domain otherdb.com
SkipPort 3307
The ezproxy.cfg file may contain any number of SkipPort lines.
Cookie Demo-OpenURL="http://sfx.exlibrisgroup.com:9003/yourlib"; domain=.doi.org
The cookie must specify the domain of hosts to which it applies.
MetaFind MuseCookie
to activate special cookie handling needed by III's MetaFind product.
This line must appear in each database that requires this special
handling.
EZproxy 2.2e GA (2003-09-09) contains a change that corrects a compatibility issue between EZproxy and SFX links to Web of Knowledge. It also contains changes to the mini-DNS server.
EZproxy 2.2d GA (2003-09-01) contains two changes:
Option IgnoreSIGCHLD
to ezproxy.cfg.
EZproxy 2.2c GA (2003-08-14) contains the following changes:
EZproxy 2.2b GA (2003-08-05) corrects a problem in 2.2a that had disabled the URLAppend (UA) command in ezproxy.cfg.
EZproxy 2.2a GA (2003-08-02) contains the following changes:
In some instances, people have placed comments on the end of lines that contain EZproxy directives, such as:
IncludeIP 68.15.177.100 # Test machine
The use of comments like this is not supported, and in EZproxy 2.2, it
actually causes ExcludeIP and IncludeIP lines that contain such comments
to fail.
Please make certain to always place comments on their own lines, such as:
# Test machine
IncludeIP 68.15.177.101
Option ForceHTTPSLogin
to ezproxy.cfg.
Sites that use these statements should verify that they appear before your first Title (T) line, or else any databases that appear before them will not be directed through your outgoing proxy server.
This changes allows you to route proxy requests for different database vendors to different outgoing proxy servers, and to disable proxy server use for specific databases. This change was implemented in support of the LOCKSS project. Sample use in ezproxy.cfg is:
Proxy proxy1.yourlib.org
ProxySSL proxy1.yourlib.org
Title Some database accessed through proxy1.yourlib.org
URL http://www.somedb.com
Domain somedb.com
Proxy
ProxySSL
Title Other database that will not use a proxy server
URL http://www.otherdb.com
Domain otherdb.com
Proxy proxy2.yourlib.org
Title Another database that will use proxy2 for http, but will make https requests directly
...
Proxy and ProxySSL statements effect all databases that follow them until another Proxy or ProxySSL statement appears.
As before, the Proxy and ProxySSL statements may still contain a username:password at the end to allow EZproxy to send a username/password when making proxy requests.
Title Book24x7.com
URL http://library.books24x7.com/library.asp?^B
Books24x7Site ABC123
TokenKey SomethingYouPickAndDontTellAnyone
TokenSignatureKey YouGetThisFromBooks24x7
DJ books24x7.com
In this example, the ABC123 is a site identifier issues to you by Books24x7.com. The
TokenKey is a random string that you pick that is used to encrypt the username of the person accessing
EZproxy before sending it to Books24x7.com. The TokenSignatureKey is used to encrypt a combination
of the IP address making the request and the encrypted username formed with TokenKey, or just the
IP address if someone is accessing from within an ExcludeIP range.
This process does not disclose the identify of the EZproxy user to Books24x7.com. It sends an encrypted string that identifies each user uniquely. If necessary, Books24x7.com can provide your library with this encrypted string, then you can cross-reference it to the original user using the new:
http://ezproxy.yourlib.org:2048/token
page.
Your account is limited to ^0 session^1
Here is a typical application:
::iii
Host iii.yourlib.org
Refused; Unknown
...more authentication statements...
/iii
EZproxy 2.0k GA (2003-06-12) contains changes that:
EZproxy 2.0j GA (2003-06-02) contains corrections:
http://ezproxy.yourlib.org:2048/login?refresh=local&url=http://ejournals.ebsco.com/Home
to insure that people clicking on this URL from your local machines are redirected correctly to EJS.
::ssl=5,ldap=ldaphost.yourlib.org,uid=$U,ou=student,o=yourlib,c=us
::ssl=0,ldap=ldaphost.yourlib.org,uid=$U,ou=student,o=yourlib,c=us
where "ssl=5" specifies that certificate number 5 should be provided and "ssl=0" specifies that no certificate should be provided.
::banner=hello.html
EZproxy will look for hello.html in the docs subdirectory.
ezproxy.usr may contain multiple banner statements. The last such statement that appears before a user authenticates determines which web page will be used as the banner, such as:
::banner=robin.html
robin:secret
::banner=pat.html
pat:passcode
::banner=general.html
::ftp=ftp.yourlib.org
::proxy=mpa;http://some.valid.url/
where http://some.valid.url/ is some URL that the proxy server will always be able to access.
This option may only be used if ezproxy.cfg has an outgoing proxy server statement such as:
Proxy outproxy.yourlib.org:3128 someuser:somepass
EZproxy does not store the user's password in any files, so if EZproxy is restarted, it will use
the "someuser:somepass" for outgoing requests for any existing users.
Changes between EZproxy 1.4e and EZproxy 1.4d include corrections for:
EZproxy version 1.4d corrected a problem that caused the Linux and Solaris versions to abort under certain conditions.
Changes between EZproxy 1.4a and EZproxy 1.c include:
::external=http://auth.yourlib.org/cgi-bin/script?
would result in EZproxy taking this URL then concatenating the literal "0=", the username from the login form,
the literal "&2=", and the password from the login form. EZproxy would then access this URL and
scan the results of the script for one of the strings
"webchkpass" or "+VALID" (the latter in any form of capitalization), and
if found one of those strings, consider the login valid.
This first form continues to work, but this has now been extended to allow the inclusion of the special strings "^u" and "^p" in the URL, along with allowing a new option "valid=" to specify what string is considered valid. For example, you might now use:
::external=http://auth.yourlib.org/ezpcheck.cfm?user=^u&pass=^p
which would allow this hypothetical Cold Fusion script to check the variables
url.user and url.pass to obtain the username and password that needs to be
checked. As show above, the script would need to display +VALID to indicate
the login was valid, although you can change this with something like:
::external=http://auth.yourlib.org/ezpcheck.cfm?user=^u&pass=^p,valid=known
which would make EZproxy look for the string "known" instead of the default
strings.
Changes between EZproxy 1.2b2 and EZproxy 1.4a include:
user1:pass1
::menu=alt.htm
user2:pass2
::menu=ftp.htm
::ftp=ftpserv.yourlib.org
In this example, user1 would see the default menu.htm, user2 would
see alt.htm, and anyone who authenticated from ftpserv.yourlib.org would
see ftp.htm.
EZproxy looks for all menu files in the docs subdirectory. The filenames may not start with a period and may only contain letters, digits and periods.
::draweb2
url http://...your-real-url-here.../ezp1.html
system 02,03,05,1*
/draweb2
This definition will only allow patrons with a library system code of 02, 03, 05 or any code that starts with a 1 to have
access.
OPTION NOCOOKIE
T IEEExplore
U http://ieeexplore.ieee.org/lpdocs/epic03
D ieee.org
OPTION COOKIE
The placement of OPTION COOKIE and OPTION NOCOOKIE is very important as both of these options take effect starting with the
next database definition in the file.
The following definition corrects the ABC CLIO problem. If your definition for this database is slightly different, simply insure that OPTION REDIRECTPATCH appears before it, and OPTION NOREDIRECTPATCH follows it.
OPTION REDIRECTPATCH
T ABC CLIO Ebooks
U http://ebooks1.abc-clio.com/plibrary/read/read.asp?
DJ abc-clio.com
OPTION NOREDIRECTPATCH
http://ezproxy.yourlib.org:2048/login?qurl=http%3a%2f%2fwww.somedb.com
Special characters that appear after qurl= must be "hex quoted," especially & to %26, = to %3d and ? to %3f.
As such, the URL:
http://ezproxy.yourlib.org:2048/login?url=http://www.somedb.com/search?name=db&option=1
would need to be changed to:
http://ezproxy.yourlib.org:2048/login?qurl=http%3a%2f%2fwww.somedb.com%2fsearch%3fname%3ddb%26option%3d1
This alternate form is not required, but is provided for instances where using a character encoded URL is useful.
::ldap=ldaphost.yourlib.org:10389,cn=^U,o=yourlib
COOKIENAME somecookie
Normally, EZproxy names its own cookie "ezproxy" during authentication.
With this option, you can tell EZproxy to use a different cookie name.
The name is limited to 16 letters and digits.
::radius=radserv.yourlib.org,secret=linkup,realm=yourlib.org
When realm= is specified, an @ sign followed by the realm text is automatically
appended to the username in the RADIUS request.
RUNAS username
RUNAS username:group
Both username and group may be specified by text names or numeric values.
This keyword is mainly useful to have EZproxy change from running as root to running as an unprivileged user after it has started listening on a privileged port such as the standard web server port 80. However, EZproxy does perform some file operations before making this switch, so this keyword should not be considered to mitigate all security issues, but rather to limit the potential security problems that could occur once EZproxy is running.
Differences between EZproxy 1.00e and EZproxy 1.2b include:
Sample use might be:
::domain=student,prefix=student\
::domain=employee,prefix=employee\
These lines would use "student\" or "employee\" to be prefix the username recorded in ezproxy.log.
ezproxy -mw
to create the file wexpired.htm in your docs subdirectory. This new file
is a customizable template for the pages displayed to the user during
password change.
OPTION REQUIREAUTHENTICATE
After adding this line to ezproxy.cfg and restarting EZproxy, you can use these URLs:
http://ezproxy.yourlib.org:2048/auth?1
If you enter this URL on a computer that is normally excluded from proxying (and thereby normally not required to login), EZproxy will set a permanent cookie on the computer indicating that users must login before accessing databases.
http://ezproxy.yourlib.org:2048/auth?0
This URL cancels the requirement that a user must login before accessing resources through EZproxy.
http://ezproxy.yourlib.org:2048/auth
This URL report whether or not the user will be required to login or not.
EZproxy 1.00d contains the following changes:
EZproxy 1.00c corrects the following issues:
EZproxy 1.00b corrects the following issues:
O LOGUSER
to the ezproxy.cfg file. External authentication scripts can provide the username for logging by adding "loguser=(name)&" before the "url=" value. See the updated reference scripts under User Authentication for more details.