Updates available via RSS
Enhancements for EZproxy implementations:
javascript, none, pdf, text, or html. If action is preceded by a “-“, then remove default patterns for rewrite and ONLY consider these patterns for rewrite.location, that shows the location of the user by mapping the IP address to the region. If the IP address cannot be mapped, the value will be blank.::LDAP BindUser -expr login:user . "@library.com" BindPassword -expr login:pass DisableReferralChasing URL ldaps://ldap.library.com/DC=library,DC=com?sAMAccountName?sub?(objectClass=person) IfUnauthenticated; Stop IfUser doe; Admin /LDAP Use the configuration statement SSLCipherSuite to specify the cipher options. Example:
SSLCipherSuite HIGH:MEDIUM:LOW:EXP:!ADH:!aNULL
The previous cipher-related options can still be used.
Bug fixes for specific EZproxy implementations related to Linux and Windows machines running Shibboleth:
2012-05-01 11:37:18 Unrecognized config.txt(31): OPTON ProxyByHoostname
2012-05-01 11:37:18 Unrecognized config.txt(35): LOGINORRT 80
2012-05-01 11:37:18 Unrecognized config.txt(43): OPTON AllowHTTPPLogin
2012-05-01 11:37:18 Unrecognized config.txt(44): OPTON ForceHTTPPSLogin
Enhancements for EZproxy implementations:
General bug fixes:
Enhancements for Shibboleth implementations:
General bug fixes:
auth:, group:, http:, cookie:
login:, env:, ParseName:, session:, db:, re:
UserFile("groups/" . login:instNumber.".txt")
UserFile("groups/".login:instNumber.".txt")
UserFile("groups/" . login:instNumber.".txt")UserFile("groups/".login:instNumber.".txt")ezproxy –m, a commented out SafariCookiePatch configuration line is now in the config.txt file.Option BlockCountryChange, when used with Shibboleth, no longer requires the workaround line Location 0.0.0.0-0.0.0.0 US in order to work.LOGFORMAT now returns the correct number of bytes transferred for https connections. In previous versions, 0 was returned.view user object now works correctly.Length, is available in V5.3. This function returns the number of characters in a string. Example usage:::Common
Set x1 = "1"
Set x2 = "12"
Set x5 = "12345"
Set x10 = "1234567890"
If Length(x1) == 1 && Length(x2) == 2 && Length(x5) == 5 &&
Length(x10) == 10 {
Msg Length test passes
} else {
Msg Length test fails
}
/Common
Ticket authentication. This improvement provides a higher level of security to the ticket. It allows you to add a $e to the end of the packet value when creating the ticket. When the $e is present, it is an end-of-ticket marker. If the $e doesn’t appear in the ticket, a warning is placed in the messages.txt log file, and the ticket is accepted for backward compatibility. If the $e is present and some text follows it, the ticket is rejected. Users are encouraged to move to the practice of adding the $e to the end of the packet before constructing the ticket.Option CookiePassThrough, has been added. This option passes ALL cookies through EZproxy to the user’s browser. Some web sites require this feature.cgiuser functionality. There is minimal impact to running configurations with this change.Incorporate RedirectSafe to specify hosts and domains that may appear in starting point URLs where the users should simply be redirected instead of being proxied, creating a controlled replacement for "Option RedirectUnknown".
When moving to this format, be sure to remove "Option RedirectUnknown" from config.txt to disable the original functionality.
Sample use:
RedirectSafe cnn.com
RedirectSafe nytimes.com
In this example, if the hostname of a URL is exactly cnn.com or nytimes.com, or if the hostname ends with .cnn.com or .nytimes.com, it is considered safe for redirection. If such a hostname appears in a starting point URL, and if EZproxy is not otherwise configured to proxy the URL, then a user accessing such a URL will be silently redirected to the specified URL instead of receiving about the hostname.
Add expression function Hash to compute MD5, SHA1, SHA256, or SHA512 hash and return it as a hexadecimal string. Sample usage:
Set hashed = Hash("MD5", "Some text") Correct order of operations for expression ternary (?:) operator to raise its precedence, allowing expressions like this to evaluate correctly:
Set session:uid = auth:pg ne "" ? auth:pg : auth:pb
Allow "Option LoginReplaceGroups" to work with Shibboleth. To enable this, edit config.txt and add:
Option LoginReplaceGroups and restart EZproxy. With this in place, if a user has already authenticated to EZproxy, but comes into EZproxy with a new Shibboleth assertion, the groups associated with the new assertion replace existing group membership instead of merging into existing group membership.
EZproxy 5.0c contains corrections to errors that:
EZproxy 5.0b contains a correction for an issue that resulted in high processor utilization.
EZproxy 5.0a includes the ability to:
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 (one or more line breaks were added in this example for display purposes; an example without added line breaks is available):
::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 (one or more line breaks were added in these examples for display purposes; examples without added line breaks are available):
ezproxy SHA512 testing
$021NGKBG$FTRoPxyZ1S2O2bJ5qRtlXcI/tKPXZRoaQojBFZKWOif0g5
Fionk07Bo13fN2+a/kmL8w80VumtcA2m1ENEiT2A
Sample use in ezproxy.usr for this password:
someuser::SHA512=$021NGKBG$FTRoPxyZ1S2O2bJ5qRtlXcI/tKPXZRoa
QojBFZKWOif0g5Fionk07Bo13fN2+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 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.
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. ::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. cgiuser:cgipass:CGI=http://www.yourlib.org/ezproxy.cgi?url=^R ::Comment=Student FTP
::FTP=student.yourlib.org
::Comment=Employee FTP
::FTP=employee.yourlib.org
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.
AddUserHeader -base64 headername
The -base64 is an optional qualifier to indicate that the username should be encoded in base64. 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
::Ticket
MD5 verysecret
User someuser; Admin
/Ticket
::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
Option SafariCookiePatch ::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. Option AllowWebSubdirectories s added to ezproxy.cfg. 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". 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
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. 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 (one or more line breaks were added in this example for display purposes; an example without added line breaks is available):
::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 (one or more line breaks were added in this example for display purposes; an example without added line breaks is available): ::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.
<s =s> s ~s !s <i =i> i !i <d =d> d !d These operations allow you to specify the exact form of test to perform. In these forms, s is for a string comparison, i is for an integer comparision, and d is for a decimal comparison. Sample usage is: 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: DenyIfRequestHeader 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 ezproxy20080325.log for each file. Another useful form is: LogFile -strftime ezproxy%Y%W.log which create a new log file each week such as ezproxy200812.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 (one or more line breaks were added in this example for display purposes; an example without added line breaks is available):
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 OCLC. 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:
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 (one or more line breaks were added in this example for display purposes; an example without added line breaks is available):
::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. 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 and ProxySSL statements effect all databases that follow them until another Proxy or ProxySSL statement appears.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
...
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 (one or more line breaks were added in each of the following two examples for display purposes; examples without added line breaks are available): 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.
This product includes GeoLite data created by MaxMind, available from www.maxmind.com .