2005.02.04 Yale Discussion

From generated class diagrams we examined interfaces and packages. This increased our collective understanding of the current code and led to some recommendations.

Authentication Module

There are several classes in the Authentication module (package) which handle validation not authentication. These should be renamed and moved to a new package named validation.

current package.class new package.class
authentication.AuthenticationSpecification validation.ValidationSpecification
authentication.Cas10ProtocolAuthenticationSpecification validation.Cas10ProtocolValidationSpecification
authentication.Cas20ProtocolAuthenticationSpecification validation.Cas20ProtocolValidationSpecification
authentication.Assertion validation.Assertion
authentication.AssertionImpl validation.AssertionImpl

Web Tier

Spring Validator(s)

The BasicCredentialsValidator should be in the web package since it is not related to authentication nor to ticket validation but is a part of form validation.

current package.class new package.class
authentication.BasicCredentialsValidator web.LoginFormValidator

Login Controller

Non-form based authentication is an important feature of CAS3. We are expecting to provide at least one other LoginController for handling non form based authentication. To be clear about the function of the current controller it should be renamed.

current package.class new package.class
web.LoginController web.LoginFormController

Ticket Module

We propose that the Authentication type never retain or return credentials.

Existing model

Authentication object encapsulates

  • Principal,
  • Attributes,
  • Credentials,
  • AuthenticationDate

Credentials should be eliminated from the type.

The entire authentication object is available from the ticket and is used during validation. This keeps around the primary Credentials and even has a method to retrieve them anytime in the future. Keeping primary credentials in memory - and even on disk if using a cache makes CAS an extremely attractive target for hacking. There is no reason that we know of to keep these.

Proposed Authentication type

Authentication object encapsulates

  • Principal,
  • Attributes,
  • AuthenticationDate
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.