Diamond CAS 4 ABFAB Radius Support Extension

An extension to enable ABFAB (Moonshot) support in Jasig CAS

License

License

GroupId

GroupId

uk.ac.diamond
ArtifactId

ArtifactId

diamond-cas4-abfab-support
Last Version

Last Version

1.0.0
Release Date

Release Date

Type

Type

jar
Description

Description

Diamond CAS 4 ABFAB Radius Support Extension
An extension to enable ABFAB (Moonshot) support in Jasig CAS
Project URL

Project URL

http://www.diamond.ac.uk/
Source Code Management

Source Code Management

https://github.com/spaetow/cas-abfab-support

Download diamond-cas4-abfab-support

How to add to project

<!-- https://jarcasting.com/artifacts/uk.ac.diamond/diamond-cas4-abfab-support/ -->
<dependency>
    <groupId>uk.ac.diamond</groupId>
    <artifactId>diamond-cas4-abfab-support</artifactId>
    <version>1.0.0</version>
</dependency>
// https://jarcasting.com/artifacts/uk.ac.diamond/diamond-cas4-abfab-support/
implementation 'uk.ac.diamond:diamond-cas4-abfab-support:1.0.0'
// https://jarcasting.com/artifacts/uk.ac.diamond/diamond-cas4-abfab-support/
implementation ("uk.ac.diamond:diamond-cas4-abfab-support:1.0.0")
'uk.ac.diamond:diamond-cas4-abfab-support:jar:1.0.0'
<dependency org="uk.ac.diamond" name="diamond-cas4-abfab-support" rev="1.0.0">
  <artifact name="diamond-cas4-abfab-support" type="jar" />
</dependency>
@Grapes(
@Grab(group='uk.ac.diamond', module='diamond-cas4-abfab-support', version='1.0.0')
)
libraryDependencies += "uk.ac.diamond" % "diamond-cas4-abfab-support" % "1.0.0"
[uk.ac.diamond/diamond-cas4-abfab-support "1.0.0"]

Dependencies

compile (6)

Group / Artifact Type Version
org.jasig.cas : cas-server-core jar 4.0.0-RC2-SNAPSHOT
org.jasig.cas : cas-server-support-radius jar 4.0.0-RC2-SNAPSHOT
net.jradius : jradius-core jar 1.0.0
uk.ac.diamond : jradius-abfab-dictionary jar 1.1.4
net.jradius : jradius-extended jar 1.1.4
org.opensaml : opensaml jar 2.5.1-1

test (1)

Group / Artifact Type Version
junit : junit jar 3.8.1

Project Modules

There are no modules declared in this project.

cas-abfab-support

CAS support for ABFAB (Moonshot) authentication

This repository contains extensions of the cas-server-support-radius module which are CAS 3.5 and CAS 4.0 compatible.

It contains:

ABFABRadiusAuthenticationHandler - An extension of the standard RadiusAuthenticationHandler
  - It deals with the SAML assertion returned in an Access-Accept packet from a Moonshot RADIUS 
    server.
  - New property "principalIdentifierURN" identifies which SAML attribute to use as credential
    
ABFABRadiusServerImpl - An extension of the standard JRadiusServerImpl
  - Additional method "authenticateEx" performs standard authentication and returns the 
    Access-Accept packet received from the RADIUS server (used by ABFABRadiusAuthenticationHandler)
  - Adds GSS-* ABFAB (see http://datatracker.ietf.org/doc/draft-ietf-abfab-gss-eap/) attributes 
    to RADIUS request
  - In CAS 3.5.x specifically, enables EAP-TTLS authentication with inner protocols PAP, MD5 
    or EAP-MSCHAPv2

Prerequisites

The ABFAB components require the use of the Coova JRadius library, which in turn requires the IPDR base. To enable the use of these components, you must:

Define the Coova repository in the POM.XML file for the app using the ABFAB components:

  <repositories>
    <repository>
      <id>coova</id>
      <name>Coova Repository</name>
      <url>http://coova-dev.s3.amazonaws.com/mvn</url>
    </repository>
  </repositories>

You must install IPDR base manually using the below steps:

  • Download org.ipdrjava_2.0.0.zip
  • Extract org.ipdr_2.0.0/ipdr.jar
  • Install it with Maven: mvn install:install-file -DgroupId=ipdr -DartifactId=ipdrbase -Dversion=2.0.0 -Dpackaging=jar -Dfile=/path/to/extracted/ipdr.jar

All other components should be available from Maven Central.

Usage

Usage of ABFABRadiusServerImpl in the deployerConfigContext.xml matches the CAS 4.0.0 style, and is compatible with CAS 3.5.2:

1. Include the following namespace (if it is not included already):

xmlns:c="http://www.springframework.org/schema/c"

2. Specify your RadiusServer and radiusClientFactory beans (in CAS 3.x, no more constructor-arg 
   hell):

<!-- RADIUS server protocol choice -->
<bean id="RadiusServer_id1"
      class="uk.ac.diamond.cas.abfab.radius.ABFABRadiusServerImpl"
      c:protocol="EAP_TTLS_EAP_MSCHAPv2"
      c:clientFactory-ref="radiusClientFactory1" />

<!-- RADIUS client factory 1 -->
<bean id="radiusClientFactory1"
      class="org.jasig.cas.adaptors.radius.RadiusClientFactory"
      p:inetAddress="ip.address.here"
      p:sharedSecret="radius.shared.secret.here" />
      
By specifying multiple RadiusServer beans with different protocol settings, you can try different 
protocols for authentication. You can specify multiple radiusClientFactory beans, each with 
different host names and shared secrets, and refer different RadiusServer beans to different 
client factories. 
 
3. In the "servers" property of (ABFAB)RadiusAuthenticationHandler, simply refer to the server(s) as 
follows:

<ref local="RadiusServer_id1" />
:
:

4. Include Maven dependencies as follows:

CAS 3.5.x:  

<dependency>
  <groupId>uk.ac.diamond</groupId>
  <artifactId>diamond-cas3-abfab-support</artifactId>
  <version>1.0.0</version>
</dependency>

CAS 4.0.0:  

<dependency>
  <groupId>uk.ac.diamond</groupId>
  <artifactId>diamond-cas4-abfab-support</artifactId>
  <version>1.0.0</version>
</dependency>

This is still a work in progress.

Versions

Version
1.0.0