NCI CTSU. CTSU Single Sign-On (Java) Software Framework. Document Information: Approvals: Sponsor/Owner. Protocol/Project.



Similar documents
CTSU SSO (Java) Installation and Integration Guide

The increasing popularity of mobile devices is rapidly changing how and where we

Alfresco Share SAML. 2. Assert user is an IDP user (solution for the Security concern mentioned in v1.0)

A Standards-based Mobile Application IdM Architecture

Securing Web Services With SAML

Single Sign-On Implementation Guide

This chapter describes how to use the Junos Pulse Secure Access Service in a SAML single sign-on deployment. It includes the following sections:

OAuth 2.0 Developers Guide. Ping Identity, Inc th Street, Suite 100, Denver, CO

SAML Security Option White Paper

Parallels Open Platform

Ameritas Single Sign-On (SSO) and Enterprise SAML Standard. Architectural Implementation, Patterns and Usage Guidelines

INTEGRATE SALESFORCE.COM SINGLE SIGN-ON WITH THIRD-PARTY SINGLE SIGN-ON USING SENTRY A GUIDE TO SUCCESSFUL USE CASE

Single Sign-On Implementation Guide

Single Sign-on. Overview. Using SSO with the Cisco WebEx and Cisco WebEx Meeting. Overview, page 1

Introduction to SAML

Enabling Federation and Web-Single Sign-On in Heterogeneous Landscapes with the Identity Provider and Security Token Service Supplied by SAP NetWeaver

White Paper March 1, Integrating AR System with Single Sign-On (SSO) authentication systems

PingFederate. Salesforce Connector. Quick Connection Guide. Version 4.1

Department Service Integration with e-pramaan

NetIQ Access Manager. Developer Kit 3.2. May 2012

Using SAML for Single Sign-On in the SOA Software Platform

HP Software as a Service. Federated SSO Guide

Single Sign-On Implementation Guide

Secure the Web: OpenSSO

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

Integrating Apex into Federated Environment using SAML 2.0. Jon Tupman Portalsoft Solutions Ltd

Single Sign-On Implementation Guide

Web Based Single Sign-On and Access Control

Symplified I: Windows User Identity. Matthew McNew and Lex Hubbard

CA Adapter. Installation and Configuration Guide for Windows. r2.2.9

DocuSign Single Sign On Implementation Guide Published: March 17, 2016

PARTNER INTEGRATION GUIDE. Edition 1.0

IMPLEMENTING SINGLE SIGN- ON USING SAML 2.0 ON JUNIPER NETWORKS MAG SERIES JUNOS PULSE GATEWAYS

STUDY ON IMPROVING WEB SECURITY USING SAML TOKEN

Tenrox. Single Sign-On (SSO) Setup Guide. January, Tenrox. All rights reserved.

IBM WebSphere Application Server

Department Service Integration with e-pramaan

Allidm.com. SSO Introduction. Discovering IAM Solutions. Leading the IAM facebook/allidm

Siebel CRM On Demand Single Sign-On. An Oracle White Paper December 2006

MLSListings Single Sign On Implementation Guide. Compatible with MLSListings Applications

PHP Integration Kit. Version User Guide

SAML Single-Sign-On (SSO)

Single Sign-On Toolkit. The National Association of REALTORS Center for REALTOR Technology

Lecture Notes for Advanced Web Security 2015

SAML-Based SSO Solution

Cloud Single Sign-On and On-Premise Identity Federation with SAP NetWeaver Cloud White Paper

Single Sign On (SSO) Implementation Manual. For Connect 5 & MyConnect Sites

Agenda. How to configure

Perceptive Experience Single Sign-On Solutions

USING FEDERATED AUTHENTICATION WITH M-FILES

CTSU Operational ET-CTN. April 21, 2013

Architecture Guidelines Application Security

TROUBLESHOOTING RSA ACCESS MANAGER SINGLE SIGN-ON FOR WEB-BASED APPLICATIONS

Building Secure Applications. James Tedrick

Web Applications Access Control Single Sign On

Flexible Identity Federation

Web Services Security: OpenSSO and Access Management for SOA. Sang Shin Java Technology Evangelist Sun Microsystems, Inc. javapassion.

Single Sign On Integration Guide. Document version:

Configuring Single Sign-On for Documentum Applications with RSA Access Manager Product Suite. Abstract

New Single Sign-on Options for IBM Lotus Notes & Domino IBM Corporation

An Oracle White Paper Dec Oracle Access Management Security Token Service

How To Use Saml 2.0 Single Sign On With Qualysguard

Microsoft Office 365 Using SAML Integration Guide

CA Performance Center

How to create a SP and a IDP which are visible across tenant space via Config files in IS

OAuth Guide Release 6.0

OpenSSO: Simplify Your Single-Sign-On Needs. Sang Shin Java Technology Architect Sun Microsystems, inc. javapassion.com

Improving Security and Productivity through Federation and Single Sign-on

Software Design Document SAMLv2 IDP Proxying

INUVIKA OPEN VIRTUAL DESKTOP ENTERPRISE

esoc SSA DC-I Part 1 - Single Sign-On and Access Management ICD

CS 356 Lecture 28 Internet Authentication. Spring 2013

Integrating CRM On Demand with the E-Business Suite to Supercharge your Sales Team

Computer Systems Security 2013/2014. Single Sign-On. Bruno Maia Pedro Borges

MONDESIR Eunice WEILL-TESSIER Pierre FEDERATED IDENTITY. ASR 2006/2007 Final Project. Supervisers: Maryline Maknavicius-Laurent, Guy Bernard

Getting Started with Single Sign-On

The EUMETSAT EO Portal User Management Concept

SAML 2.0 SSO Deployment with Okta

Authorization-Authentication Using

SAML Authentication Quick Start Guide

This section includes troubleshooting topics about single sign-on (SSO) issues.

IBM SPSS Collaboration and Deployment Services Version 6 Release 0. Single Sign-On Services Developer's Guide

Biometric Single Sign-on using SAML Architecture & Design Strategies

SAML AS AN SSO STANDARD FOR CUSTOMER IDENTITY MANAGEMENT. How to Create a Frictionless, Secure Customer Identity Management Strategy

HP Software as a Service

CTSU Enterprise Applications

White Paper Cybercom & Axiomatics Joint Identity & Access Management (R)evolution

Leveraging SAML for Federated Single Sign-on:

Policy Guide Access Manager 3.1 SP5 January 2013

JVA-122. Secure Java Web Development

Server based signature service. Overview

SAML-Based SSO Solution

Working with Indicee Elements

DualShield SAML & SSO. Integration Guide. Copyright 2011 Deepnet Security Limited. Copyright 2011, Deepnet Security. All Rights Reserved.

Setup Guide Access Manager 3.2 SP3

TIB 2.0 Administration Functions Overview

SAML Security Analysis. Huang Zheng Xiong Jiaxi Ren Sijun

About Me. Software Architect with ShapeBlue Specialise in. 3 rd party integrations and features in CloudStack

Copyright: WhosOnLocation Limited

Biometric Single Sign-on using SAML

Transcription:

Document Information: Sponsor/Owner Protocol/Project Function/System NCI CTSU CTSU Single Sign-On (Java) Software Framework Document Approvals: IT Manager / Jayan Nair Date Assistant Project Director / Ravi Rajaram Date Project Director / Steve Riordan Date Rev. 03 Page i

Table of Contents 1. REFERENCES... 1 2. DEFINITIONS, ACRONYMS, AND ABBREVIATIONS... 1 3. INTRODUCTION... 2 4. SCOPE AND PURPOSE... 2 4.1 TARGET AUDIENCE... 3 5. REQUIREMENTS... 3 6. DEVELOPMENT INFORMATION... 3 6.1 SYSTEM INFORMATION... 3 7. SAML/SSO OVERVIEW... 3 7.1 BENEFITS... 4 8. CORE DESIGN... 4 8.1 INTERFACE CLASS DIAGRAM... 5 8.2 ZSSO... 6 8.3 SAMLREQUEST... 6 8.3.1 Attributes... 6 8.3.2 Operations... 6 8.4 SAMLRESPONSE... 6 8.4.1 Attributes... 6 8.4.2 Operations... 7 8.5 SSOAUTHENTICATOR... 7 8.5.1 Attributes... 7 8.5.2 Operations... 7 8.6 SSOUSER... 7 8.6.1 Attributes... 7 8.6.1 Operations... 7 9. IMPLEMENTATION DESIGN... 7 9.1 INTERFACE CLASS DIAGRAM... 8 9.2 CTEPSAMLREQUEST... 8 9.2.1 Attributes... 8 9.2.2 Operations... 9 9.3 CTEPSAMLRESPONSE... 9 9.4 CTEPSINGLESIGNON... 9 9.5 CTEPSSOAUTHENTICATOR... 9 9.6 PERSONROSTER... 9 9.6.1 Attributes... 9 9.6.2 Operations... 9 9.7 CTEPSSOUSER... 9 9.7.1 Attributes... 9 9.7.2 Operations... 10 10. CTSUSSO.JAR/DLL... 10 11. SAML AUTHENTICATION WORKFLOW... 10 Rev. 03 Page ii

11.1 AUTHENTICATION SEQUENCE DIAGRAM... 11 11.2 AUTHENTICATION WORKFLOW... 12 Rev. 03 Page iii

1. References # Name Location (Intranet) Location (Internet) 1. CTSU SSO Java Starter Kit Installation and Integration Document (CTSU_SSO_Java_StarterKit_Installat ion_v1.0.docx) \\westat.com\dfs\ctsu8339\ta sks\8339_14_cdms\07_it\rel eases\ctsu_sso\java\1.0 https://www.ctsu.org/ctsusso ---JAVA ---VER_1.0 ---Documents 2. CTSU Rave Requirements Document (CTSU- RAVE_Integraion_Requirements.docx ) \\westat.com\dfs\ctsu8339\ta sks\8339_14_cdms\07_it\req uirement 2. Definitions, Acronyms, and Abbreviations # Abbreviation Expansion Description 1. API Application Programming Interface A set of declarations of the functions (or procedures) that an operating system, library or service provides to support requests made by computer programs. 2. CTEP-IAM Identity and Access Management Unique identity management system provided by CTEP 3. IdP Identity Provider It is a centralized system that creates, maintains, and manages identity information for principals (users) and provides primary authentication to other service providers within a federation. 4. SAML Security Assertion Markup Language XML-based open standard for exchanging authentication and authorization data between security domains, that is, between an identity provider (a producer of assertions) and a service provider (a consumer of assertions). 5. HTTP Hypertext Transfer Protocol A communications protocol for the transfer of information on the internet 6. HTTPS Hypertext Transfer Protocol over Secure Socket Layer An URI scheme used to indicate a secure HTTP connection 7. SOAP Simple Object Access Protocol A protocol for exchanging XML-based messages over computer networks, normally using HTTP/HTTPS 8. SP Service Provider A system that provides services (such as patient enrollment service or clinical data collection service) to the end users. 9. SSO Single Sign-On Ability to login in once and access multiple systems if connected within the federation Rev. 03 Page 1 of 12

3. Introduction As part of the integration of Rave as the CDMS (Clinical Data Management System) for the Cooperative Groups and other lead organizations, a CTEP-IAM based Single Sign-On (SSO) authentication system is planned to be used for authenticating users by the existing web based systems at the Cooperative Groups. The CTSU SSO authenticator implements Security Assertion Markup Language (SAML) for login authentication. To enable the incorporation of this SSO federated authentication system to existing Cooperative Group applications, CTSU created a SSO software framework and a starter kit to integrate CTEP IAM SSO authenticator to existing JAVA and.net applications of the cooperative groups. This document details the installation and usage instructions for the CTSU SSO Framework for Java. A similar document will be available for.net developers for using the CTSU SSO Framework for.net. The CTSU SSO framework provides the following advantages: 1. Object oriented approach by providing a class based implementation to hide the SAML complexity. 2. Simple APIs to construct SAML request. 3. Simple APIs to extract SAML response. 4. Ability to verify the digital signature of the Identity Provider. 5. Optional roster data integration for authorization. 6. Ability to extend the framework to work with other Identity Providers other than NCI CTEP-IAM. 7. Two options for integrating SSO to the existing web applications a. iframe Based Approach: In this approach the developers can embed the CTEP IAM login content to the existing login page. The displayed IAM login content can be customized by using a CSS file integrated with the implementation. b. Page Redirection Based Approach: In this approach when the users login to the existing login page, they will be redirected the URL of the Identity Provider (CTEP-IAM) and after they successfully login the user will be sent back to the welcome page of the original system they tried to access. Ability to replace the CTEP IAM image header with cooperative group s specific image header is also incorporated with this implementation. 4. Scope and Purpose The CTSU SSO Framework and starter kit are not products by themselves. This document specifies a sample implementation and a recommended framework that the cooperative groups and other organizations can use to integrate to their existing web based systems to use the NCI CTEP SAML authentication scheme. The requirements for this development are captured as part of the CTSU-Rave integration effort and are listed in the references section. The testing details are available in the JIRA issue tracking system. This document specifies the design of the CTSU SSO API framework and their architectural details. It includes the most important details that will enable the developer to sufficiently understand the software architecture to enable its integration with their existing systems. The UML modeling diagrams used in this design document are described below. 1. Use Case Diagram: A use case diagram is a type of behavioral diagram. Its purpose is to present a graphical overview of the functionality provided by a system in terms of actors, their goals represented as use cases and any dependencies between those use cases. Rev. 03 Page 2 of 12

2. Class Diagram: A class diagram is a type of static structure diagram that describes the structure of a system by showing the system s classes, their attributes, and the relationships between the classes. 3. Sequence Diagram: A sequence diagram is used primarily to show the interactions between objects in the sequential order that those interactions occur. 4. Activity Diagram: An activity diagram represents the business and operational step-by-step workflows of components in a system. An activity diagram shows the overall flow of control. 4.1 Target Audience This document is targeted at the stakeholder management, architect, developer and 3 rd party implementer to aid in developing a high-level familiarity with the CTSU SSO API architecture as well as a more detailed understanding to support implementation. The SSO API framework starter kit provides a set of UI tools as well as documentation for the users which will complement this document. 5. Requirements Please refer to the CTSU Rave Integration Requirements document listed in the references section for the full listing of the requirements gathered during the initial KA (Knowledge Acquisition) sessions. 6. Development Information 6.1 System Information Software Version Java JDK 1.5 MVC Framework Spring MVC 2.5.6 View Framework ORM Hibernate 3.2.0 Transactions, Inversion of Control Spring 2.5.6 Application Server JBoss 5.1.0 Database Development Tools Build Source Control JDBC Driver JRE JSP, JSP tag libraries, AJAX, Scriptaculous, JMESA library Not applicable JDeveloper 10.1.3, Eclipse, Enterprise Architect JDeveloper / Ant VSS cadsr API 4.0 Oracle JDBC 10.2.0.3.0 (ojdbc14.jar) jdk1.6.0_25 7. SAML/SSO Overview Security Assertion Markup Language (SAML) developed by the Security Services Technical Committee of the Organization for the Advancement of Structured Information Standards (OASIS) is an XML-based framework for communicating user authentication, entitlement, and attribute information. SAML is a flexible and extensible protocol. As its name suggests, SAML allows business entities to make assertions regarding the identity, attributes, and entitlements of a subject (an entity that is often a human user) to other entities, such as a partner company or another enterprise application. SAML protocol is designed to be used and customized if necessary by other standards. SAML has emerged as the gold standard Rev. 03 Page 3 of 12

for federated identity. By defining standardized mechanisms for the communication of security and identity information between business partners, SAML makes federated identity, and the cross domain transactions that it enables a reality. SAML can act to push responsibility for proper management of identities to the identity provider, which is more often compatible with its business model than that of a service provider. Using SAML to "reuse" a single act of authentication (such as logging in with a username and password) multiple times across multiple services can reduce the cost of maintaining account information by transferring the burden to a single centralized entity - the identity provider. An assertion is a package of information that supplies one or more statements made by a SAML authority. SAML defines three different kinds of assertion statement that can be created by a SAML authority. Authentication: The specified subject was authenticated by a particular means at a particular time. This kind of statement is typically generated by a SAML authority called an identity provider, which is in charge of authenticating users and keeping track of other information about them. Attribute: The specified subject is associated with the supplied attributes. Authorization Decision: A request to allow the specified subject to access the specified resource has been granted or denied. Web based SSO, is a single sign-on service where the user is authenticated. 7.1 Benefits 1. Centralized Storage of User Information 2. More secure than other custom SSO methods 3. Industry standard 4. Can be used in a federation for federated authentication 5. User & Password issues are managed centrally 6. Platform and Vendor Neutrality 8. Core Design We made the class hierarchy as simple as possible. The CTSU SSO API framework just consists of four main classes. 1. SAMLRequest 2. SAMLResponse 3. SSOAuthenticator 4. SSOUser All the classes are declared as abstract classes to provide member variables and methods that are wholly shared by all IdP specific subclasses which are extended from these parent classes. Rev. 03 Page 4 of 12

8.1 Interface Class Diagram cd CTSUSSO Interface Name: CTSUSSO Interface Author: Westat Version: 1.0 Created: 10/11/2011 12:38:21 PM Updated: 10/14/2011 6:04:05 PM core::ssoauthenticator # SSOAuthenticator() + sendloginrequest(samlrequest) : void + getsamlresponse(httpservletrequest) : SAMLResponse + getssouser(samlresponse) : SSOUser - validateresponsesignature(xmlobject, String) : String - validateresponseschemaandspec(xmlobject) : String - checksubjectconfimrationaddress(element, String) : boolean + gettokenvalidityinterval(element) : String + getsoapxml(element) : String - getbasicx509credential(element) : BasicX509Credential ~ algequals(string, String) : boolean framew ork::zsso + ZSSO() - getsetting(string, String) : Object - getuserid() : String + logmessage(string) : void core::samlrequest - issuer: String - responseurl: String - certificatename: String - keystorename: Stri ng - idpurl: String - idpsessionindex: String - httprequest: HttpServletRequest - httpresponse: HttpServletResponse - relaystate: String - customgraphicurl: String - customcssurl: String - othervalues: String + SAMLRequest() + getissuer() : String + setissuer(string) : voi d + getresponseurl() : String + setresponseurl(stri ng) : voi d + getcertificatename() : String + setcerti fi catename(stri ng) : voi d + getkeystorename() : String + setkeystorename(stri ng) : voi d + getidpurl() : String + setidpurl(stri ng) : void + getidpsessionindex() : String + setidpsessi onindex(stri ng) : voi d + gethttprequest() : HttpServletRequest + sethttprequest(httpservl etrequest) : voi d + gethttpresponse() : HttpServletResponse + sethttpresponse(httpservl etresponse) : voi d + getrelaystate() : String + setrel aystate(stri ng) : voi d + getcustomgraphicurl() : String + setcustomgraphicurl(string) : void + getcustomcssurl() : String + setcustomcssurl(stri ng) : voi d + setotherval ues(stri ng) : voi d + getothervalues() : String core::samlresponse ~ idpurl: String ~ idpsessionindex: String ~ saml Response: Response ~ saml MessageContext: SAMLMessageContext ~ tokenexpiretime: Date ~ othervalues: String + getidpurl() : String + getidpsessionindex() : String + getsamlresponse() : Response + setsaml Response(Response) : voi d + getsamlmessagecontext() : SAMLMessageContext + setsaml MessageContext(SAMLMessageContext) : voi d + setidpurl(stri ng) : voi d + setidpsessi onindex(stri ng) : voi d + sett okenexpi ret i me(date) : voi d + gettokenexpiretime() : Date + setotherval ues(string) : voi d + getothervalues() : String core::ssouser # username: String # firstname: String # lastname: String # emailaddress: String + SSOUser() + setusername(string) : voi d + getusername() : String + setfi rstname(string) : voi d + getfirstname() : String + setlastname(string) : voi d + getlastname() : String + setemai l Address(Stri ng) : voi d + getemailaddress() : String Figure 1: Interface Class Diagram Rev. 03 Page 5 of 12

8.2 ZSSO This is the parent framework class. As of now apart from the logging mechanism no additional features/methods have been added. But going forward once the framework matures we expect some additional method to be included. 8.3 SAMLRequest The SAMLRequest is the class definition for the main request object which holds key information related to the SAML authentication request. It has all the attributes that are required by the IdP to process the user authentication. It also holds key information about the certificate key store location also. 8.3.1 Attributes Attribute Type Description issuer String The system which initiated the request. This should be the SP name responseurl String The landing page upon successful authentication. This is the page where IdP will send back the SAML response. SP->IdP, this is the issuer URL and for SP1->SP2, this is the SP2 URL. certificatename String Certificate use to verify the IdP signature keystorename String Where the certificate can be located idpurl String Address of the IdP provider idpsessionindex String This holds the session index. Required for logout request and SP1 to SP2 request httprequest HttpServletRequest The basic request object httpresponse HttpServletResponse The basic response object relaystate String This is for deep linking into RAVE customgraphicurl String This is to specify to use the custom graphic/logo URL customcssurl String This is to specify to use the custom CSS for iframe URL needpersonroster boolean This is to set to true if the person roster information is needed othervalues String Future placeholder 8.3.2 Operations Corresponding getters and setters are available for the above attributes. 8.4 SAMLResponse The SAMLResponse is the main response object which holds key information from the IdP once the authentication has been process by the IdP. It has all the attributes that are required by the SP to process the authenticated user into their system. It also holds key assertion related to the authentication along with the IdP session index which is basically the confirmation key. This is the index key that is tied to the session expiry and also when jumping from one SP to the other within the federation. 8.4.1 Attributes Attribute Type Description idpurl String The address of the IdP provider that provided the authentication idpsessionindex String This holds the authenticated session index. Also needed for logout request and SP1 to SP2 request samlresponse Response SAML 2 response object samlmessagecontext SAMLMessageContext SAML message context extracted from SAML response Rev. 03 Page 6 of 12

Attribute Type Description tokenexpiretime Date IdP token expiry timestamp othervalues String Future placeholder 8.4.2 Operations Corresponding getters and setters are available for the above attributes. 8.5 SSOAuthenticator The SSOAuthenticator is the main class that sits between the SAMLRequest and SAMLResponse classes. It s main job is to package the objects to/from the IdP. 8.5.1 Attributes No private attributes defined. 8.5.2 Operations Method Input Return Description sendloginrequest (abstract) getsamlresponse (abstract) getssouser (abstract) SAMLRequest void Main function of the method is to construct the SAML request based on the inputs and package it to the IdP for authentication HttpServletRequest SAMLResponse Gets the SAML response object for the request input. Will contain all the attributes returned by the IdP SAMLResponse SSOUser Method to extract the authenticated user information as sent in by the IdP gettokenvalidityinterval Element String Will return the token expiry as a string from the SAML DOM. getsoapxml Element String For future use 8.6 SSOUser As the class name suggests, the SSOUser class holds all the user information from the IdP upon successful authentication. 8.6.1 Attributes Attribute Type Description username String The user name of the authenticated user firstname String The first name of the authenticated user lastname String The last name of the authenticated user emailaddress String The email address of the authenticated user 8.6.1 Operations Corresponding getters and setters are implemented for the above attributes. 9. Implementation Design This design talks about a single IdP implementation. In this case, the single IdP would be the CTEP-IAM IdP. Based out of the core APIs defined, this implementation adds the business functionality to the abstract classes. Rev. 03 Page 7 of 12

The implementation design consists of the following CTEP subclasses. 1. CTEPSAMLRequest 2. CTEPSAMLResponse 3. CTEPSSOAuthenticator 4. CTEPSingleSignOn 5. CTEPSSOUser 6. PersonRoster 9.1 Interface Class Diagram cd CTEP Implementation Model Name: CTEP Implementation Model Author: Westat Version: 1.0 Created: 10/11/2011 5:10:12 PM Updated: 10/12/2011 11:08:28 AM ZSSO core::ssoauthenticator «extends» ctep::ctepssoauthenticator core::ssouser # username: String # firstname: String # lastname: String # emailaddress: String «extends» ctep::ctepssouser # regexpirydays: String # pwdexpirydays: String # personrosters: List<PersonRoster> «uses» core::samlresponse ~ idpurl: String ~ idpsessionindex: String ~ saml Response: Response ~ saml MessageContext: SAMLMessageContext ~ tokenexpiretime: Date ~ othervalues: String domain::personroster core::samlrequest - issuer: String - responseurl: String - certificatename: String - keystorename: Stri ng - idpurl: String - idpsessionindex: String - httprequest: HttpServletRequest - httpresponse: HttpServletResponse - relaystate: String - customgraphicurl: String - customcssurl: String - othervalues: String «extends» # groupcode: String # rosterstatus: String # rosterstatusdate: Date # institutioncode: String # institutionname: String # institutionrole: String # studytype: Stri ng # fundingtype: String ctep::ctepsamlrequest - splogolocati on: Stri ng - includeroster: boolean = false - miniloginscreen: boolean = false «extends» ctep:: CTEPSAMLResponse 9.2 CTEPSAMLRequest Figure 2: CTEP-IAM Interface Class Diagram This subclass extends the SAMLRequest abstract class. It has the following additional attributes specific to CTEP-IAM IdP. 9.2.1 Attributes Attribute Type Description splogolocation String URL of the public SP logo Rev. 03 Page 8 of 12

Attribute Type Description includeroster boolean Whether to include roster information from CEWS miniloginscreen boolean Whether to get a smaller login interface for embedding in an iframe 9.2.2 Operations Corresponding getters and setters are available for the above attributes. 9.3 CTEPSAMLResponse This subclass extends the parent SAMLResponse class. To start with, it is an empty class. This class is included to show how Groups can extend the current implementation for using with a different IdP. 9.4 CTEPSingleSignOn This is the main CTEP-IAM web SSO processing class. It extends the parent framework class to inherit all the core functionality like logging. All the logic for processing the authentication resides in this class. 9.5 CTEPSSOAuthenticator This subclass extends the SSOAuthenticator. It has the implementation to all the abstract methods of the parent class. The implementation instantiates the CTEPSingleSignOn class to set and get the SAML request/response. 9.6 PersonRoster The CTEP-IAM has the functionality to invoke the CEWS (CTSU Enterprise Web Service) to obtain the roster information for the user. All the attributes exposed by CEWS are available here. For more information please refer to the CEWS guide. 9.6.1 Attributes Attribute Type Description groupcode String The Group s CTEP code rosterstatus String The roster s status rosterstatusdate Date The roster status date institutioncode String The CTEP institution code institutionname String The institution name institutionrole String The role of the institution studytype String The type of study fundingtype String The funding type 9.6.2 Operations Corresponding getters and setters are available for the above attributes. 9.7 CTEPSSOUser This subclass extends the SSOUser abstract class. It has the following additional attributes specific to CTEP-IAM IdP. 9.7.1 Attributes Attribute Type Description regexpirydays String The no. of days before the CTEP registration expires pwdexpirydays String The no. of days before the CTEP password expires Rev. 03 Page 9 of 12

Attribute Type Description personrosters List<PersonRoster> The list of Person Rosters 9.7.2 Operations Corresponding getters and setters are available for the above attributes. 10. CTSUSSO.jar/dll The ctsusso.jar for JAVA and ctsusso.dll for.net comes pre-configured to work with CTEP-IAM as the Identity Provider. As part of the starter kit distribution, the following packages are included with the ctsusso.jar/dll com.westat.ctsu.sso.framework this is a framework suggested by the CTSU on how to design the SAML web SSO. This framework will provide a clean separation between the web input and the business logic. com.westat.ctsu.sso.core this package contains all the core SAML parent class with abstract methods/attributes for implementation by the subclasses. com.westat.ctsu.sso.ctep this package contains all the CTEP-IAM implementation subclasses that extend the parent core classes. com.westat.ctsu.sso.domain this package contains all domain objects pertaining to the IdP. Figure 3: CTEP-IAM CTSUSSO jar/dll 11. SAML Authentication Workflow Here s a high level overview of the how the whole SAML workflow takes place. 1. Any SP that will trust a 3rd party IDP Authority will need a copy of its certificate 2. A client connects to an Authority and authenticated with local security information (username/password) and supplies a certificate (optional) that it will use to prove its identity. Rev. 03 Page 10 of 12

3. The Authority authenticates the client and verifies the supplied certificate against Certificate Authority s (CA) certificate (if available). 4. Authority creates assertion with client roles/attributes, identity, supplied certificate, signed assertion and returns to client. 5. The SOAP message contains the SAML assertion in the header plus a signature of the SOAP message. Signature is created with private key corresponding to certificate. 6. The client verifies the message signature, validates its SAML compliance, validates the subject confirmation data and it also checks the SAML signature against the Authorities certificate that is has locally. 11.1 Authentication Sequence Diagram sd Class Model AuthenticationService AuthenticationProvider SubjectProvider SAMLProvider User/Client authenticate(credentials) authenticate(credentials) getsubjectprovider() :SubjectProvider getsubject(credentials) :Subject getsamlprovider() :SAMLProvider getsaml(subject) :SAMLAssertion :SAMLAssertion :SAMLAssertion Figure 4: Authentication Sequence Diagram Rev. 03 Page 11 of 12

11.2 Authentication Workflow Figure 5: SAML SSO Workflow Rev. 03 Page 12 of 12