Reference Documentation
Configuring web.xml for AutheNtication (authN)
Servlet Filter init params for (authN). See example web.xml in Tomcat Install Guide.
Property |
Req/Opt |
Description |
spnego.krb5.conf |
Required |
Valid value: Path to krb5.conf file (relative or absolute path)
Take a look at the pre-flight documentation for guidance on how to create this file.
See the Tomcat Install Guide for an example configuration.
|
spnego.login.conf |
Required |
Valid value: Path to login.conf file (relative or absolute path)
Take a look at the pre-flight documentation for guidance on how to create this file.
See the Tomcat Instal Guide for an example configuration.
|
spnego.login.server.module |
Required |
Valid value: value specified in login.conf file for server
Take a look at the pre-flight documentation for guidance on how to create this file.
See the Tomcat Instal Guide for an example configuration.
|
spnego.login.client.module |
Required |
Valid value: value specified in login.conf file for client
Take a look at the pre-flight documentation for guidance on how to create this file.
See the Tomcat Instal Guide for an example configuration.
|
spnego.preauth.username |
Required |
Valid value: Windows NT Domain Account.
Take a look at the pre-flight documentation for guidance on how to create this account.
|
spnego.preauth.password |
Required |
Valid value: Pre-auth Domain Account Password.
Should set password to never expire.
|
spnego.allow.basic |
Required |
Valid values are true or false .
Offer HTTP Basic Authentication
in addition to Kerberos Authentication.
Consider this option if an HTTP client cannot negotiate SPNEGO token(s).
Set this value to false if you only allow Kerberos Authentication.
|
spnego.allow.unsecure.basic |
Required |
Valid values are true or false .
With respect to Basic Authentication, specify if HTTPS
is required. If Basic Authentication is not allowed, this operation is a no-op.
Set this value to false if you do not want to offer Basic Authentication for non-SSL connections.
|
spnego.allow.localhost |
Optional |
Valid values are true or false .
Default is false .
Skip authentication if requests are coming from localhost.
Requests that originate from localhost will not require authentication.
Set this value to true if you run a local instance of the server
and you want to avoid having to register an SPN for your workstation.
Set this value to false if requests from localhost should be rejected.
|
spnego.prompt.ntlm |
Required |
Valid values are true or false .
The SPNEGO Filter does not support NTLM.
Set this value to true if clients who wish to authenticate
via NTLM should be offered Basic Authentication (assuming spnego.allow.basic=true).
Set this vaue to false if NTLM Authentication should be rejected.
|
spnego.allow.delegation |
Optional |
Valid values are true or false .
Default is false
IE and AD allow delegation by default
See DelegateServletRequest docs for more info
Set this value to true to enable the filter for delegation
|
spnego.exclude.dirs |
Optional |
Valid Values are a list of URL paths starting at the context root that should NOT undergo authentication (authN).
e.g. /images,/css
e.g. /public/news,/js,/assets/global/release
Default is to authN every request.
Introduced in spnego-r9.jar
|
spnego.logger.level |
Optional |
Valid values are 1 thru 7 .
Default specified by container
1 = FINEST; 7 = SEVERE
Set value to 1 for debugging/verbose logging.
|
A Servlet Filter resource mapping can either be defined at the Container level or at
the web application level. The example in the Tomcat Install Guide
has the mapping defined at the Container level.
Here's an example mapping for .jsp files:
<filter-mapping>
<filter-name>SpnegoHttpFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
And here's an example mapping for .cfm files:
<filter-mapping>
<filter-name>SpnegoHttpFilter</filter-name>
<url-pattern>*.cfm</url-pattern>
</filter-mapping>
The location of the filter-mapping in the web.xml is important. The SPNEGO Filter
mapping must be defined before any other mapping. It must be defined first/executed first.
Optional: Addtional Configuration in web.xml to enable AuthoriZation (authZ)
Append the authZ init params to the existing authN params in the Servlet Filter definition.
spnego-r9.jar required for authZ. See example web.xml in the enable authZ with LDAP guide.
Property |
Req/Opt |
Description |
spnego.authz.class |
*Optional |
*To enable the AuthZ option, MUST specify java class
Valid Value is a class that implements the UserAccessControl interface.
e.g. LdapAccessControl
The LdapAccessControl class is a reference implementation that is bundled with the SPNEGO Library.
Introduced in spnego-r9.jar
|
spnego.authz.ldap.url |
*Optional |
*To enable the AuthZ option, MUST specify LDAP URL
Valid Value is a URL to the LDAP server.
e.g. ldap://athena.local:389
e.g. ldaps://athena.local:636
Introduced in spnego-r9.jar
|
spnego.authz.ldap.filter.i |
*Optional |
*To enable the AuthZ option, MUST specify expression
Valid Value is an LDAP Query/Filter expression.
Index i starts at one (1) and the maximum number of filter expressions is 200.
Take a look at the enable authZ with LDAP guide for guidance. Additional information can be found in the javadoc for the
LdapAccessControl class,
the UserAccessControl interface, and the
SpnegoAccessControl interface.
Introduced in spnego-r9.jar
|
spnego.authz.policy.file |
Optional |
Valid Value: Path to a spnego.policy file (relative or absolute path).
If no path provided, you must specify policies in the web.xml file.
Take a look at the enable authZ with LDAP guide for guidance as well as
the authZ for standalone apps example.
Additional information can be found in the javadoc for the LdapAccessControl class.
Introduced in spnego-r9.jar
|
spnego.authz.sitewide |
Optional |
Valid Value is one of the user-defined resource labels.
Resource labels are specified via the spnego.authz.resource.name.i parameter.
e.g. site-wide-authZ
Default is that authZ will NOT be automatically applied accross the entire site.
The value MUST be a user-defined resource label and NOT an attribute name.
Introduced in spnego-r9.jar
|
spnego.authz.403 |
Optional |
Valid Value is a path starting at the context root to a custom page that should be displayed if a user is denied authZ access.
e.g. /403.html
e.g. /my-403-handler.jsp
Default is to let the user's Web Browser define how an HTTP Status code of 403 Forbidden should be handled.
Introduced in spnego-r9.jar
|
spnego.authz.ttl |
Optional |
Valid Value is a number specifying in minutes how long an LDAP query result should stay in the cache.
Default is 20 minutes.
Parameter is used to minimize trips/queries to the LDAP Server.
Introduced in spnego-r9.jar
|
spnego.authz.resource.name.i |
Optional |
Valid Value is a user-defined label/name.
e.g. edit-button
e.g. site-wide
Index i starts at one (1) and the maximum number of resource labels is 200.
Take a look at the enable authZ with LDAP guide for guidance as well as
the authZ for standalone apps example.
Introduced in spnego-r9.jar
|
spnego.authz.resource.type.i |
Optional |
Required if spnego.authz.resource.name.i is specified.
Valid Values are has or any .
Index i must match each corresponding index in each spnego.authz.resource.name.i parameter.
Introduced in spnego-r9.jar
|
spnego.authz.resource.access.i |
Optional |
Required if spnego.authz.resource.name.i is specified.
Valid Value is a list of attributes that back the resource.
e.g. IT,Marketing,Los Angeles,NY Users,Biz Dev
e.g. File Share Access,London Users,Accounting
Index i must match each corresponding index in each spnego.authz.resource.name.i parameter.
Introduced in spnego-r9.jar
|
spnego.authz.unique |
Optional |
Valid Values are true or false .
Default is true .
Take a look at the enable authZ with LDAP guide for guidance.
Additional information can be found in the javadoc for the
LdapAccessControl class,
the UserAccessControl interface, and the
SpnegoAccessControl interface.
A value of true will throw an exception if the uniqueness property is violated.
A value of false will allow attribute names to exist in two or more attribute sets.
Introduced in spnego-r9.jar
|
spnego.authz.ldap.username |
Optional |
Required if the SPNEGO Library is being used in a standalone java program/thick client.
Valid Value is a domain user/service account.
Default is to use the spnego.preauth.username IF the filter is NOT configured to use a Keytab file.
Take a look at the authZ for standalone apps example.
Introduced in spnego-r9.jar
|
spnego.authz.ldap.password |
Optional |
Required if the SPNEGO Library is being used in a standalone java program/thick client.
Valid Value is password for the domain user/service account.
Default is to use the spnego.preauth.password IF the filter is NOT configured to use a Keytab file.
Take a look at the authZ for standalone apps example.
Introduced in spnego-r9.jar
|
spnego.authz.ldap.deecee |
Optional |
Required if the SPNEGO Library is being used in a standalone java program/thick client.
Valid Values is the base syntax of an LDAP Query/Filter when specifying the DC portion.
e.g. DC=ATHENA,DC=LOCAL
In this example, take a look at the corresponding krb5.conf file to figure out the naming pattern.
Default is computed automatically when using the SpnegoHttpFilter.
Introduced in spnego-r9.jar
|
spnego.authz.ldap.factory |
Optional |
Valid Values are defined by Java's java.naming.factory.initial property.
Default is Java's com.sun.jndi.ldap.LdapCtxFactory .
Introduced in spnego-r9.jar
|
spnego.authz.ldap.authn |
Optional |
Valid Values are defined by Java's java.naming.security.authentication property.
Default is Java's Simple .
Introduced in spnego-r9.jar
|
spnego.authz.ldap.pool |
Optional |
Valid Values are defined by Java's com.sun.jndi.ldap.connect.pool property.
Default is true .
Introduced in spnego-r9.jar
|
Most of the above authZ init params are specific to the reference implementation, LdapAccessControl class,
bundled with the SPNEGO Library (spnego-r9.jar)
A custom implementation is free to use any user information store (e.g. RDBMS, xml file, REST service, etc.) however the custom implementation
MUST implement the UserAccessControl interface
Optional: Getting User Information
spnego.authz.user.info |
Optional |
Valid Value is one ore more user attributes.
e.g. mail,memberOf,department,displayName
The available user attributes depends on your user store
Take a look at the get user group info from LDAP guide.
Introduced in spnego-r9.jar
|
spnego.authz.ldap.user.filter |
Optional |
Required if the spnego.authz.user.info is specified.
Valid Value is an LDAP Query/Filter expression.
The filter expression depends on your user store.
Take a look at the get user group info from LDAP guide.
Introduced in spnego-r9.jar
|
Take a look at the get user group info from LDAP guide for additional information on
how to obtain and use the user information in your web-application or your standalone application.
Links:
pre-flight checklist
install guide - tomcat
install guide - jboss
install guide - glassfish
install guide - spring boot 2.x
install guide - spring boot 3.x
enable authZ with LDAP
get user group info from LDAP
reference docs
api docs
download
Troubleshooting:
HelloKDC.java
hello_spnego.jsp
HelloKeytab.java
hello_delegate.jsp
SpnegoHelloClient.java
ExampleSpnegoAuthenticatorValve.java
Examples:
create keytab for client
create keytab for app server
credential delegation
protected SOAP Web Service
tomcat authenticator valve
jboss authenticator valve
authZ for standalone apps
protecting edit button on page
Licensing:
GNU LGPL
© 2009 Darwin V. Felix. All rights reserved.
|