Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Removing all the older 1.8.0 and 1.8.1 Shib instructions, they are archived in the older 1.8.x docs and not needed for 4.x

...

Configuration File:

[dspace]/config/modules/authentication.cfg

Property:

plugin.sequence.org.dspace.authenticate.AuthenticationMethod

Example Value:

Code Block
plugin.sequence.org.dspace.authenticate.AuthenticationMethod = \
 org.dspace.authenticate.ShibAuthentication

Configuring Shibboleth Authentication

...

Once it has been enabled (see above), Shibboleth Authentication is configured via its own [dspace]/config/modules/authentication-shibboleth.cfg file.

DSpace requires an email address as the user's credentials. There are two ways of providing email to DSpace from Shibboleth:

  1. By explicitly specifying to the user which attribute (header) carries the email address.
  2. By turning on the user-email-using-tomcat=true which means the software will attempt to acquire the user's email from Tomcat.

The first option takes Precedence when specified. both options can be enabled to allow for fallback.

A full list of all available Shibboleth Configurations:

Configuration File:

[dspace]/config/modules/authentication-shibboleth.cfg

Property:

email-header

Example Value:

email-header = MAIL

Informational Note:

The option specifies that the email comes from the mentioned header. This value is CASE-Sensitive.

Property:

firstname-header

Example Value:

firstname-header = SHIB-EP-GIVENNAME

Informational Note:

Optional. Specify the header that carries the user's first name. This is going to be used for the creation of new-user.

Property:

lastname-header

Example Value:

lastname-header = SHIB-EP-SURNAME

Informational Note:

Optional. Specify the header that carries user's last name. This is used for creation of new user.

Property:

email-use-tomcat-remote-user

Example Value:

email-use-tomcat-remote-user = true

Informational Note:

This option forces the software to acquire the email from Tomcat.

Property:

autoregister

Example Value:

autoregister = true

Informational Note:

Option will allow new users to be registered automatically if the IdP provides sufficient information (and the user does not exist in DSpace).

Property:

Code Block
role-header
role-header.ignore-scope

Example Value:

Code Block
role-header = Shib-EP-ScopedAffiliation
role-header.ignore-scope = true

or

Code Block
role-header = Shib-EP-UnscopedAffiliation
role-header.ignore-scope = false

Informational Note:

These two options specify which attribute that is responsible for providing user's roles to DSpace and unscope the attributes if needed. When not specified, it is defaulted to 'Shib-EP-UnscopedAffiliation', and ignore-scope is defaulted to 'false'. The value is specified in AAP.xml (Shib 1.3.x) or attribute-filter.xml (Shib 2.x). The value is CASE-Sensitive. The values provided in this header are separated by semi-colon or comma. If your service provider (SP) only provides scoped role header, you need to set role-header.ignore-Scope as 'true'. For example if you only get Shib-EP-ScopedAffiliation instead of Shib-EP-ScopedAffiliation, you name to make your settings as in the example value above.

Property:

default-roles

Example Value:

default-roles = Staff, Walk-ins

Informational Note:

When user is fully authN or IdP but would not like to release his/her roles to DSpace (for privacy reasons?), what should the default roles be given to such user. The values are separated by semi-colon or comma.

Property:

Code Block
role.Senior\ Researcher
role.Librarian

Example Value:

Code Block
role.Senior\ Researcher = Researcher, Staff
role.Librarian = Administrator

Informational Note:

The following mappings specify role mapping between IdP and Dspace. The left side of the entry is IdP's role (prefixed with 'role.') which will be mapped to the right entry from DSpace. DSpace's group as indicated on the right entry has to EXIST in DSpace, otherwise user will be identified as 'anonymous'. Multiple values on the right entry should be separated by comma. The values are CASE-Sensitive. Heuristic one-to-one mapping will be done when the IdP groups entry are not listed below (i.e. if 'X' group in IdP is not specified here, then it will be mapped to 'X' group in DSpace if it exists, otherwise it will be mapped to simply 'anonymous'). Given sufficient demand, future release could support regex for the mapping special characters need to be escaped by '\'

Configuring Shibboleth Authentication (DSpace 1.8.1)

Info
titleImportant Note

Because of a mix-up with the 1.8.1 release the configuration parameters for the Shibboleth plugin reverted to their previous 1.7.x style. These parameters should be included in your dspace.cfg instead of the modules directory for this release. Future releases will fix this and they will be moved back to the config modules style.

Shibboleth is a distributed authentication system for securely authenticating users and passing attributes about the user from one or more identity providers. In the Shibboleth terminology DSpace is a Service Provider which receives authentication information and then based upon that provides a service to the user. With Shibboleth DSpace will require that you use Apache installed with the mod_shib module acting as a proxy for all HTTP requests for your servlet container (typically Tomcat). DSpace will receive authentication information from the mod_shib module through HTTP headers.

See for more information on installing and configuring a Shibboleth Service Provider: https://wiki.shibboleth.net/confluence/display/SHIB2/Installation

Sessions:

When configuring your Shibboleth Service Provider there are two paradigms you may use: Active or Lazy Sessions. Active sessions is where the mod_shib module is configured to product a URL space. No one will be able to access that URL without first authenticating with Shibboleth. Using this method you will need to configure shibboleth to protect the URL: "/shibboleth-login". The alternative, Lazy Session does not protect any specific URL. Instead apache will allow access to any URL, and when the application wants to it may initiate an authenticated session. The Lazy Session method is preferable for most DSpace installations where you want public access to most of DSpace but restricted access to limited areas - such as administration.

Authentication Methods:

DSpace supports authentication using NetID, or email address. A user's NetID is a unique identifier from the IdP that identifies a particular user. The NetID can be of almost any form such as a unique integer, string, or with Shibboleth 2.0 you can use "targeted ids". You will need to coordinate with your shibboleth federation or identity provider. There are three ways to supply identity information to DSpace:

1) NetID from Shibboleth Header (best)

The NetID-based method is superior because users may change their email address with the identity provider. When this happens DSpace will not be able to associate their new address with their old account.
 
2) Email address from Shibboleth Header (okay)

In the case where a NetID header is not available or not found DSpace will fall back to identifying a user based-upon their email address.
 
3) Tomcat's Remote User (worst)
 
In the event that neither Shibboleth headers are found then as a last resort DSpace will look at Tomcat's remote user field. This is the least attractive option because Tomcat has no way to supply additional attributes about a user. Because of this the autoregister option is not supported if this method is used.

Identity Scheme Migration Strategies:

If you are currently using Email based authentication (either 1 or 2) and want to upgrade to NetID based authentication then there is an easy path. Simply enable shibboleth to pass the NetID attribute and set the netid-header below to the correct value. When a user attempts to log in to DSpace first DSpace will look for an EPerson with the passed NetID, however when this fails DSpace will fall back to email based authentication. Then DSpace will update the user's EPerson account record to set their netted so all future authentications for this user will be based upon netted. One thing to note is that DSpace will prevent an account from switching NetIDs. If an account all ready has a NetID set and then they try and authenticate with a different NetID the authentication will fail.

EPerson Metadata:

One of the primary benefits of using Shibboleth based authentication is receiving additional attributes about users such as their names, telephone numbers, and possibly their academic department or graduation semester if desired. DSpace treats the first and last name attributes differently because they (along with email address) are the three pieces of minimal information required to create a new user account. For both first and last name supply direct mappings to the Shibboleth headers. In additional to the first and last name DSpace supports other metadata fields such as phone, or really anything you want to store on an eperson object. Beyond the phone field, which is accessible in the user's profile screen, none of these additional metadata fields will be used by DSpace out-of-the box. However if you develop any local modification you may access these attributes from the EPerson object. The Vireo ETD workflow system utilizes this to aid students when submitting an ETD.

Role-based Groups:

DSpace is able to place users into pre-defined groups based upon values received from Shibboleth. Using this option you can place all faculty members into a DSpace group when the correct affiliation's attribute is provided. When DSpace does this they are considered 'special groups', these are really groups but the user's membership within these groups is not recorded in the database. Each time a user authenticates they are automatically placed within the pre-defined DSpace group, so if the user loses their affiliation then the next time they login they will no longer be in the group.
 
Depending upon the shibboleth attributed use in the role-header it may be scoped. Scoped is shibboleth terminology for identifying where an attribute originated from. For example a students affiliation may be encoded as "student@tamu.edu". The part after the @ sign is the scope, and the preceding value is the value. You may use the whole value or only the value or scope. Using this you could generate a role for students and one institution different than students at another institution. Or if you turn on ignore-scope you could ignore the institution and place all students into one group.

The values extracted (a user may have multiple roles) will be used to look up which groups to place the user into. The groups are defined as "authentication.shib.role.<role-name>" which is a comma separated list of  DSpace groups.

Configuration File:

[dspace]/config/dspace.cfg

Property:

authentication.shib.lazysession

Example Value:

authentication.shib.lazysession = true

Informational Note:

Whether to use lazy sessions or active sessions.

Property:

authentication.shib.lazysession.loginurl

Example Value:

authentication.shib.lazysession.loginurl = /Shibboleth.sso/Login

Informational Note:

The url to start a shibboleth session (only for lazy sessions)

Property:

authentication.shib.lazysession.secure

Example Value:

authentication.shib.lazysession.secure = true

Informational Note:

Force HTTPS when authenticating (only for lazy sessions)

Property:

authentication.shib.netid-header

Example Value:

authentication.shib.netid-header = SHIB-NETID

Informational Note:

The HTTP header where shibboleth will supply a user's NetID.

Property:

authentication.shib.email-header

Example Value:

authentication.shib.email-header = SHIB-MAIL

Informational Note:

The HTTP header where the shibboleth will supply a user's email address.

Property:

authentication.shib.email-use-tomcat-remote-user

Example Value:

authentication.shib.email-use-tomcat-remote-user = false

Informational Note:

Used when a netid or email heades are not available should shibboleth authentication fall back to using Tomcat's remote user feature.

Property:

authentication.shib.autoregister

Example Value:

authentication.shib.autoregister = true

Informational Note:

Should we allow new users to be registered automatically?

Property:

authentication.shib.sword.compatability

Example Value:

authentication.shib.sword.compatability = true

Informational Note:

Sword compatability will allow this authentication method to work when using sword. Sort relies on username and password based authentication and is entirely incapable of supporting shibboleth. This option allows you to authenticate username and passwords for sword sessions with out adding another authentication method onto the stack. You will need to ensure that a user has a password. One way to do that is to create the user via the create-administrator command line command and then edit their permissions.

Property:

authentication.shib.firstname-header

Example Value:

authentication.shib.firstname-header = SHIB_GIVENNAME

Informational Note:

The HTTP header where the shibboleth will supply a user's given name.

Property:

authentication.shib.lastname-header

Example Value:

authentication.shib.lastname-header = SHIB_SN

Informational Note:

The HTTP header where the shibboleth will supply a user's sur name.

Property:

authentication.shib.eperson.metadata

Example Value:

Code Block
authentication.shib.eperson.metadata = \
 SHIB-telephone => phone, \
 SHIB-cn => cn

Informational Note:

Additional user attributes mapping, multiple attributes may be stored
 for each user. The left side is the Shibboleth-based metadata Header
 and the right side is the eperson metadata field to map the attribute to.

Property:

authentication.shib.eperson.metadata.autocreate

Example Value:

authentication.shib.eperson.metadata.autocreate = true

Informational Note:

If the eperson metadata field is not found, should it be automatically created?

Property:

authentication.shib.role-header

Example Value:

authentication.shib.role-header = SHIB_SCOPED_AFFILIATION

Informational Note:

The shibboleth header to do role-based mappings (see section on roll based mapping section above)

Property:

authentication.shib.role-header.ignore-scope

Example Value:

authentication.shib.role-header.ignore-scope = true

Informational Note:

Weather to ignore the attribute's scope (everything after the @ sign for scoped attributes)

Property:

authentication.shib.role-header.ignore-value

Example Value:

authentication.shib.role-header.ignore-value = false

Informational Note:

Weather to ignore the attribute's value (everything before the @ sign for scoped attributes)

Property:

authentication.shib.role.[affiliation-attribute]

Example Value:

Code Block
authentication.shib.role.faculty = Faculty, Member \
 authentication.shib.role.staff = Staff, Member \
 authentication.shib.role.student = Students, Member

Informational Note:

Mapping of affiliation values to DSpace groups.(See the roll based mapping section above)

...

Shibboleth is a distributed authentication system for securely authenticating users and passing attributes about the user from one or more identity providers. In the Shibboleth terminology DSpace is a Service Provider which receives authentication information and then based upon that provides a service to the user. With Shibboleth DSpace will require that you use Apache installed with the mod_shib module acting as a proxy for all HTTP requests for your servlet container (typically Tomcat). DSpace will receive authentication information from the mod_shib module through HTTP headers.

...