Commit 70937430 authored by Misagh Moayyed's avatar Misagh Moayyed
Browse files

Merge branch 'master' into checkstyle-naming

parents 0ea8ab05 47e36d26
......@@ -12,7 +12,8 @@ There are two core configurable ticketing components:
## Ticket Registry
The deployment environment and technology expertise generally determine the particular `TicketRegistry` component.
A cache-backed implementation is recommended for HA deployments, while the default `DefaultTicketRegistry` in-memory component may be suitable for small deployments.
A cache-backed implementation is recommended for HA deployments, while the default
`DefaultTicketRegistry` in-memory component may be suitable for small deployments.
### Default (In-Memory) Ticket Registry
......@@ -39,7 +40,6 @@ deployments. Components for the following caching technologies are provided:
* [Hazelcast](Hazelcast-Ticket-Registry.html)
* [Ehcache](Ehcache-Ticket-Registry.html)
* [Memcached](Memcached-Ticket-Registry.html)
* [JBoss Cache](JBoss-Cache-Ticket-Registry.html)
#### Secure Cache Replication
A number of cache-based ticket registries support secure replication of ticket data across the wire,
......
---
layout: default
title: CAS - JBoss Cache Ticket Registry
---
# JBoss Cache Ticket Registry
<div class="alert alert-danger"><strong>Deprecated Module!</strong><p>The JBoss Cache Ticket Registry module is deprecated and will no longer be maintained. Furthermore, the module may be removed in subsequent CAS releases. Please try to use other options provided by the CAS server for your distributed ticket registry needs.</p></div>
JBoss integration is enabled by including the following dependency in the Maven WAR overlay:
{% highlight xml %}
<dependency>
<groupId>org.jasig.cas</groupId>
<artifactId>cas-server-integration-jboss</artifactId>
<version>${cas.version}</version>
</dependency>
{% endhighlight %}
`JBossCacheTicketRegistry` stores data in a [JBoss Cache](http://www.jboss.org/jbosscache/) that supports distributed
caches for failover support and is therefore suitable for HA deployments. Almost all of the configuration for this
component happens in the JBoss Cache configuration file; we present a starting configuration here but readers should
consult JBoss Cache
[configuration documentation](http://docs.jboss.org/jbosscache/3.2.1.GA/userguide_en/html/configuration.html)
for further details.
Sample `JBossCacheTicketRegistry` configuration for `ticketRegistry.xml`.
{% highlight xml %}
<bean id="ticketRegistry"
class="org.jasig.cas.ticket.registry.JBossCacheTicketRegistry"
p:cache-ref="cache" />
<bean id="cache"
class="org.jasig.cas.util.JBossCacheFactoryBean"
p:configLocation="classpath:jbossCache.xml" />
</bean>
{% endhighlight %}
The `jbossCache.xml` file may be bundled in the overlay which allows it to be accessed from the classpath, as in the
example above, or it may be located on the filesystem. A sample `jbossCache.xml` file follows.
{% highlight xml %}
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.cache.TreeCache" name="jboss.cache:service=TreeCache">
<depends>jboss:service=Naming</depends>
<depends>jboss:service=TransactionManager</depends>
<attribute name="TransactionManagerLookupClass">
org.jboss.cache.transaction.DummyTransactionManagerLookup
</attribute>
<!--
| SERIALIZABLE, REPEATABLE_READ (default), READ_COMMITTED, READ_UNCOMMITTED, NONE
-->
<attribute name="IsolationLevel">REPEATABLE_READ</attribute>
<!--
| LOCAL, REPL_ASYNC, REPL_SYNC, INVALIDATION_ASYNC, INVALIDATION_SYNC
-->
<attribute name="CacheMode">REPL_SYNC</attribute>
<!-- Just used for async repl: use a replication queue -->
<attribute name="UseReplQueue">false</attribute>
<!-- Replication interval for replication queue (in ms) -->
<attribute name="ReplQueueInterval">0</attribute>
<!-- Max number of elements which trigger replication -->
<attribute name="ReplQueueMaxElements">0</attribute>
<!-- Cluster name must be same for all members in cluster in order to find each other. -->
<attribute name="ClusterName">TreeCache-Cluster</attribute>
<attribute name="ClusterConfig">
<config>
<!--
| If you have a multihomed machine, set the bind_addr, e.g bind_addr="192.168.0.2"
-->
<UDP mcast_addr="228.1.2.3" mcast_port="48866"
ip_ttl="64" ip_mcast="true"
mcast_send_buf_size="150000" mcast_recv_buf_size="80000"
ucast_send_buf_size="150000" ucast_recv_buf_size="80000"
loopback="false"/>
<PING timeout="2000" num_initial_members="3" up_thread="false" down_thread="false"/>
<MERGE2 min_interval="10000" max_interval="20000"/>
<FD_SOCK/>
<VERIFY_SUSPECT timeout="1500" up_thread="false" down_thread="false"/>
<pbcast.NAKACK gc_lag="50" retransmit_timeout="600,1200,2400,4800"
max_xmit_size="8192" up_thread="false" down_thread="false"/>
<UNICAST timeout="600,1200,2400" window_size="100" min_threshold="10" down_thread="false"/>
<pbcast.STABLE desired_avg_gossip="20000" up_thread="false" down_thread="false"/>
<FRAG frag_size="8192" down_thread="false" up_thread="false"/>
<pbcast.GMS join_timeout="5000" join_retry_timeout="2000" shun="true" print_local_addr="true"/>
<pbcast.STATE_TRANSFER up_thread="true" down_thread="true"/>
</config>
</attribute>
<!-- Whether or not to fetch state on joining a cluster. -->
<attribute name="FetchInMemoryState">true</attribute>
<!--
|
| The max amount of time (in milliseconds) we wait until the
| initial state (ie. the contents of the cache) are retrieved from
| existing members in a clustered environment
-->
<attribute name="InitialStateRetrievalTimeout">15000</attribute>
<!--
| Number of milliseconds to wait until all responses for a
| synchronous call have been received.
-->
<attribute name="SyncReplTimeout">15000</attribute>
<!-- Max number of milliseconds to wait for a lock acquisition -->
<attribute name="LockAcquisitionTimeout">10000</attribute>
<!-- Name of the eviction policy class. -->
<attribute name="EvictionPolicyClass"></attribute>
<attribute name="UseMarshalling">false</attribute>
<attribute name="StateTransferVersion">130</attribute>
</mbean>
</server>
{% endhighlight %}
......@@ -107,7 +107,6 @@ in the overlay (1):
| | cas-servlet.xml
| | cas.properties
| | deployerConfigContext.xml
| | restlet-servlet.xml
| | web.xml
| |
| +---spring-configuration
......
......@@ -40,6 +40,6 @@ Every OAuth client must be defined as a CAS service (notice the new *clientId* a
...
{% endhighlight %}
# OAuth Authentication
# OpenID Authentication
To configure CAS to act as an OpenID provider, please [see this page](../protocol/OpenID-Protocol.html).
\ No newline at end of file
To configure CAS to act as an OpenID provider, please [see this page](../protocol/OpenID-Protocol.html).
......@@ -10,7 +10,6 @@ by encrypting and signing tickets:
* [Hazelcast](Hazelcast-Ticket-Registry.html)
* [Ehcache](Ehcache-Ticket-Registry.html)
* [Memcached](Memcached-Ticket-Registry.html)
* [JBoss Cache](JBoss-Cache-Ticket-Registry.html)
<div class="alert alert-info"><strong>Default Behavior</strong><p>Encryption by default is turned off
when you use the above ticket registries. It requires explicit configuration before it can be used.</p></div>
......
......@@ -134,7 +134,6 @@ fault tolerance and are suitable for both active/passive and active/active setup
* [Hazelcast](../installation/Hazelcast-Ticket-Registry.html)
* [EhCache](../installation/Ehcache-Ticket-Registry.html)
* [JBoss](../installation/JBoss-Cache-Ticket-Registry.html)
* [MemCached](../installation/Memcached-Ticket-Registry.html)
The particular choice of caching technology should be driven by infrastructure and expertise as much as performance
......@@ -142,8 +141,8 @@ and availability considerations. It's hardly valuable to have a high-performance
expertise to troubleshoot when problems invariably arise.
The technology considerations of the various cache components merit some discussion since there are notable
differences that impact availability and performance characteristics. Cache systems like Ehcache and JBoss Cache
(and its offspring, Infinispan) offer a distributed cache that presents a single, consistent view of entries regardless
differences that impact availability and performance characteristics. Cache systems like Ehcache and Hazelcast
offer a distributed cache that presents a single, consistent view of entries regardless
of the node contacted. Distributed caches rely on replication to provide for consistency. Cache systems like memcached
store the ticket on exactly 1 node and use a deterministic algorithm to locate the node containing the ticket:
......
---
layout: default
title: CAS - CAS REST Protocol (Deprecated)
---
#REST Protocol
The REST protocol allows one to model applications as users, programmatically acquiring service tickets to authenticate to other applications. This means that other applications would be able to use a CAS client to accept Service Tickets rather than to rely upon another technology such as client SSL certificates for application-to-application authentication of requests. This is achieved by exposing a way to RESTfully obtain a Ticket Granting Ticket and then use that to obtain a Service Ticket.
<div class="alert alert-danger"><strong>Deprecated Module!</strong><p>Note that the instructions in this document refer to a deprecated REST module. Please <a href='REST-Protocol.html'>use this document instead</a> if you plan to turn on the CAS server's REST API.</p></div>
<div class="alert alert-warning"><strong>Usage Warning!</strong><p>The REST endpoint may become a tremendously convenient target for brute force dictionary attacks on CAS server. Enable support only soberly and with due consideration of security aspects.</p></div>
#Components
By default the CAS RESTful API is configured in the `restlet-servlet.xml`, which contains the routing for the tickets. It also defines the resources that will resolve the URLs. The `TicketResource` defined by default (which can be extended) accepts username/password.
Support is enabled by including the following in your `pom.xml` file:
{% highlight xml %}
<dependency>
<groupId>org.jasig.cas</groupId>
<artifactId>cas-server-integration-restlet</artifactId>
<version>${cas.version}</version>
</dependency>
{% endhighlight %}
REST support is currently provided internally by the [Restlet framework](http://restlet.org/).
#Configuration
To turn on the protocol, add the following to the `web.xml`:
{% highlight xml %}
<servlet>
<servlet-name>restlet</servlet-name>
<servlet-class>org.restlet.ext.spring.RestletFrameworkServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>restlet</servlet-name>
<url-pattern>/v1/*</url-pattern>
</servlet-mapping>
{% endhighlight %}
#Protocol
##Request a Ticket Granting Ticket
###Sample Request
{% highlight bash %}
POST /cas/v1/tickets HTTP/1.0
username=battags&password=password&additionalParam1=paramvalue
{% endhighlight %}
###Sample Response
####Successful Response
{% highlight bash %}
201 Created
Location: http://www.whatever.com/cas/v1/tickets/{TGT id}
{% endhighlight %}
####Unsuccessful Response
If incorrect credentials are sent, CAS will respond with a 400 Bad Request error (will also respond for missing parameters, etc.). If you send a media type it does not understand, it will send the 415 Unsupported Media Type.
##Request a Service Ticket
###Sample Request
{% highlight bash %}
POST /cas/v1/tickets/{TGT id} HTTP/1.0
service={form encoded parameter for the service url}
{% endhighlight %}
###Sample Response
####Successful Response
{% highlight bash %}
200 OK
ST-1-FFDFHDSJKHSDFJKSDHFJKRUEYREWUIFSD2132
{% endhighlight %}
####Unsuccessful Response
CAS will send a 400 Bad Request. If an incorrect media type is sent, it will send the 415 Unsupported Media Type.
##Logout
{% highlight bash %}
DELETE /cas/v1/tickets/TGT-fdsjfsdfjkalfewrihfdhfaie HTTP/1.0
{% endhighlight %}
......@@ -4,14 +4,21 @@ title: CAS - CAS REST Protocol
---
# REST Protocol
The REST protocol allows one to model applications as users, programmatically acquiring service tickets to authenticate to other applications. This means that other applications would be able to use a CAS client to accept Service Tickets rather than to rely upon another technology such as client SSL certificates for application-to-application authentication of requests. This is achieved by exposing a way to RESTfully obtain a Ticket Granting Ticket and then use that to obtain a Service Ticket.
The REST protocol allows one to model applications as users, programmatically acquiring
service tickets to authenticate to other applications. This means that other applications would be able
to use a CAS client to accept Service Tickets rather than to rely upon another technology such as
client SSL certificates for application-to-application authentication of requests. This is achieved
by exposing a way to RESTfully obtain a Ticket Granting Ticket and then use that to obtain a Service Ticket.
<div class="alert alert-warning"><strong>Usage Warning!</strong><p>The REST endpoint may become a tremendously convenient target for brute force dictionary attacks on CAS server. Enable support only soberly and with due consideration of security aspects.</p></div>
<div class="alert alert-info"><strong>Restlet Module</strong><p>If you are looking for the Restlet implementation of the CAS REST API, you will find the instructions <a href="REST-Protocol-Deprecated.html">here in this document</a>.</p></div>
<div class="alert alert-warning"><strong>Usage Warning!</strong><p>The REST endpoint may
become a tremendously convenient target for brute force dictionary attacks on CAS server. Enable support
only soberly and with due consideration of security aspects.</p></div>
# Components
By default the CAS REST API is configured to add routing for the tickets. It also defines the resources that will resolve the URLs. The `TicketResource` defined by default (which can be extended) accepts username/password.
By default the CAS REST API is configured to add routing for the tickets. It
also defines the resources that will resolve the URLs. The `TicketResource` defined by
default (which can be extended) accepts username/password.
Support is enabled by including the following in your `pom.xml` file:
......@@ -27,33 +34,6 @@ Support is enabled by including the following in your `pom.xml` file:
REST support is currently provided internally by the [Spring framework](http://spring.io/guides/gs/rest-service/).
#Configuration
To turn on the protocol, add the following to the `web.xml`:
{% highlight xml %}
<servlet-mapping>
<servlet-name>cas</servlet-name>
<url-pattern>/v1/*</url-pattern>
</servlet-mapping>
{% endhighlight %}
...or delete the `web.xml` in the overlay altogether if there are no other customizations there as this mapping is provided by CAS' webapp module's `web.xml` out of the box.
Please note that if there are local customizations in overlay's `web.xml`, the following `contextConfigLocation` `<context-param>` must also be added in order to enable the new REST module: `classpath*:/META-INF/spring/*.xml`. So the entire context-param block would look like this:
{% highlight xml %}
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-configuration/*.xml
/WEB-INF/deployerConfigContext.xml
classpath*:/META-INF/spring/*.xml
</param-value>
</context-param>
{% endhighlight %}
#Protocol
##Request a Ticket Granting Ticket
......@@ -77,7 +57,9 @@ Location: http://www.whatever.com/cas/v1/tickets/{TGT id}
####Unsuccessful Response
If incorrect credentials are sent, CAS will respond with a 400 Bad Request error (will also respond for missing parameters, etc.). If you send a media type it does not understand, it will send the 415 Unsupported Media Type.
If incorrect credentials are sent, CAS will respond with a 400 Bad Request error
(will also respond for missing parameters, etc.). If you send a media type
it does not understand, it will send the 415 Unsupported Media Type.
##Request a Service Ticket
......@@ -97,7 +79,8 @@ service={form encoded parameter for the service url}
ST-1-FFDFHDSJKHSDFJKSDHFJKRUEYREWUIFSD2132
{% endhighlight %}
####Unsuccessful Response
CAS will send a 400 Bad Request. If an incorrect media type is sent, it will send the 415 Unsupported Media Type.
CAS will send a 400 Bad Request. If an incorrect media type is
sent, it will send the 415 Unsupported Media Type.
##Logout
......
Copyright 2010, JA-SIG, Inc.
This project includes software developed by Jasig.
http://www.jasig.org/
Licensed under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at:
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on
an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
This project includes:
Annotations for Metrics under Apache License 2.0
AntLR Parser Generator under BSD License
AOP alliance under Public Domain
Apache Commons Codec under Apache License, Version 2.0
Apache Commons Collections under The Apache Software License, Version 2.0
Apache Commons Lang under Apache License, Version 2.0
Apache HttpClient under Apache License, Version 2.0
Apache HttpCore under Apache License, Version 2.0
Apache Log4j API under The Apache Software License, Version 2.0
Apache Log4j Commons Logging Bridge under The Apache Software License, Version 2.0
Apache Log4j Core under The Apache Software License, Version 2.0
Apache Log4j SLF4J Binding under The Apache Software License, Version 2.0
Apereo CAS Core under Apache 2
Apereo CAS Core APIs under Apache 2
Apereo CAS JBoss Cache Integration - DEPRECATED under Apache 2
AspectJ runtime under Eclipse Public License - v 1.0
AspectJ weaver under Eclipse Public License - v 1.0
Bean Validation API under The Apache Software License, Version 2.0
CDI APIs under Apache License, Version 2.0
Commons IO under The Apache Software License, Version 2.0
Commons JEXL under The Apache Software License, Version 2.0
Commons Logging under The Apache Software License, Version 2.0
Core Hibernate O/RM functionality under GNU Lesser General Public License
dom4j under BSD License
Expression Language 2.2 Implementation under CDDL + GPLv2 with classpath exception
Expression Language 3.0 API under CDDL + GPLv2 with classpath exception
fastinfoset under Apache License, Version 2.0
FindBugs-Annotations under GNU Lesser Public License
Guava: Google Core Libraries for Java under The Apache Software License, Version 2.0
Hamcrest Core under New BSD License
Hibernate Commons Annotations under GNU Lesser General Public License
Inspektr - Aspects under Apache 2.0 License
Inspektr - Auditing API under Apache 2.0 License
Inspektr - Common API under Apache 2.0 License
Interceptors 1.1 API under lgpl
istack common utility code runtime under CDDL 1.1 or GPL2 w/ CPE
Jackson-annotations under The Apache Software License, Version 2.0
Jackson-core under The Apache Software License, Version 2.0
jackson-databind under The Apache Software License, Version 2.0
Java Annotation Indexer under AL 2.0
Java Architecture for XML Binding under CDDL 1.1 or GPL2 w/ CPE
Java Persistence API, Version 2.1 under Eclipse Public License (EPL), Version 1.0 or Eclipse Distribution License (EDL), Version 1.0
Java Servlet API under CDDL + GPLv2 with classpath exception
Java Transaction API under Commons Development and Distribution License, Version 1.0
Javassist under MPL 1.1 or LGPL 2.1 or Apache License 2.0
javax.inject under The Apache Software License, Version 2.0
JAXB CORE under CDDL 1.1 or GPL2 w/ CPE
JAXB Reference Implementation under CDDL 1.1 or GPL2 w/ CPE
JBoss Cache - Core Edition under GNU Lesser General Public License
JBoss Common Classes under lgpl
JBoss Logging 3 under Apache License, version 2.0
JBoss Logging Programming Interface under lgpl
JGroups under Library (or Lesser) GNU Public License 2.1
Joda-Time under Apache 2
jose4j under The Apache Software License, Version 2.0
JSR-250 Common Annotations for the JavaTM Platform under COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
JSR107 API and SPI under JSR-000107 JCACHE 2.9 Public Review - Updated Specification
License
JSR107 Cache RI under The Apache Software License, Version 2.0
jsr173_api under Commons Development and Distribution License, Version 1.0
JUL to SLF4J bridge under MIT License
JUnit under Eclipse Public License 1.0
LDAPTIVE under Apache 2 or GNU Lesser General Public License
Metrics Core under Apache License 2.0
Mockito under The MIT License
Objenesis under Apache 2
OGNL - Object Graph Navigation Library under Apache License, Version 2.0
Person Directory API under Apache License Version 2.0
Person Directory Implementations under Apache License Version 2.0
Reflections under WTFPL or The New BSD License
SLF4J API Module under MIT License
Spring AOP under The Apache Software License, Version 2.0
Spring Beans under The Apache Software License, Version 2.0
Spring Binding under The Apache Software License, Version 2.0
Spring Context under The Apache Software License, Version 2.0
Spring Context Support under The Apache Software License, Version 2.0
Spring Core under The Apache Software License, Version 2.0
Spring Expression Language (SpEL) under The Apache Software License, Version 2.0
Spring JDBC under The Apache Software License, Version 2.0
Spring JS under The Apache Software License, Version 2.0
Spring JS Resources under The Apache Software License, Version 2.0
Spring Object/Relational Mapping under The Apache Software License, Version 2.0
Spring TestContext Framework under The Apache Software License, Version 2.0
Spring Transaction under The Apache Software License, Version 2.0
Spring Web under The Apache Software License, Version 2.0
Spring Web Flow under The Apache Software License, Version 2.0
Spring Web MVC under The Apache Software License, Version 2.0
spring-security-core under The Apache Software License, Version 2.0
XML Commons External Components XML APIs under The Apache Software License, Version 2.0 or The SAX License or The W3C License
<!--
~ Licensed to Apereo under one or more contributor license
~ agreements. See the NOTICE file distributed with this work
~ for additional information regarding copyright ownership.
~ Apereo licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file
~ except in compliance with the License. You may obtain a
~ copy of the License at the following location:
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.jasig.cas</groupId>
<artifactId>cas-server</artifactId>
<version>4.2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cas-server-integration-jboss</artifactId>
<packaging>jar</packaging>
<name>Apereo CAS JBoss Cache Integration - DEPRECATED</name>
<description>
The CAS cas-server-integration-jboss module is deprecated and will be removed from subsequent CAS releases.
You should not attempt to include this module in your CAS Maven overlays, and rather try to use alternative
methods for your distributed ticket registry needs, such as the cas-server-integration-ehcache or
cas-server-integration-memcached modules.
</description>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<java.net.preferIPv4Stack>true</java.net.preferIPv4Stack>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.jasig.cas</groupId>
<artifactId>cas-server-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.cache</groupId>
<artifactId>jbosscache-core</artifactId>
<version>2.2.2.GA</version>
<type>jar</type>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jasig.cas</groupId>
<artifactId>cas-server-core</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>jboss-maven2</id>
<layout>default</layout>
<name>JBoss Repository</name>
<url>http://repository.jboss.org/nexus/content/repositories/deprecated</url>
</repository>
<repository>
<id>jboss</id>
<name>JBoss Repository</name>
<layout>default</layout>
<url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>
</repository>
</repositories>
<properties>
<cs.dir>${project.parent.basedir}</cs.dir>
</properties>
</project>
/*
* Licensed to Apereo under one or more contributor license
* agreements. See the NOTICE file distributed with this work
* for additional information regarding copyright ownership.
* Apereo licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a
* copy of the License at the following location:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.jasig.cas.ticket.registry;
import org.jasig.cas.ticket.Ticket;
import org.jasig.cas.ticket.registry.encrypt.AbstractCrypticTicketRegistry;
import org.jboss.cache.Cache;
import org.jboss.cache.CacheException;
import org.jboss.cache.Node;
import javax.validation.constraints.NotNull;