Attributes for the SSO GW: Shibboleth

SAML EntityIDs for the SSO GW

There are two instances of the CCC SSO Gw that you must configure attribute release to: a Pilot and a Production instance. The entityID for each is:


See below for the set of rules that need to be added to your IdP's conf/attribute-filter.xml file to release the needed attributes to the above entityIDs


Metadata for the SSO GW

Metadata for the SSO GW is contained within the the CCC Central Metadata feed that contains metadata for many CCC system-wide services. You should add the following configuration to your college/district IdP's conf/metadata-providers.xml file, which will automatically keep checking (every few hours) whether there is an updated file to download, and if so, download it and keep a local "backing file" on your IdP.

	<!-- Central CCC distribution of metadata -->
	<MetadataProvider id="CCC_Central_Metadata"
	                      xsi:type="FileBackedHTTPMetadataProvider"
	                      backingFile="%{idp.home}/metadata/ccc-central-metadata.xml"
	                      metadataURL=" http://saml.cccmypath.org/metadata/ccc-metadata.xml">
	        <MetadataFilter xsi:type="RequiredValidUntil" maxValidityInterval="PT0S"/>
	        <MetadataFilter xsi:type="SignatureValidation"
	            requireSignedRoot="true" certificateFile="${idp.home}/credentials/ccctc-md-cert.pem"/>
	        <MetadataFilter xsi:type="EntityRoleWhiteList">
	            <RetainedRole>md:SPSSODescriptor</RetainedRole>
	        </MetadataFilter>
	</MetadataProvider>

As you can tell from the above, the CCC Central Metadata feed is available at:  http://saml.cccmypath.org/metadata/ccc-metadata.xml. Note that part of the above configuration is verifying the "signature" on that metadata file and to do that you must create a new file in your IdP's credentials/ directory named 'credentials/ccctc-md-cert.pem' with the following content:

-----BEGIN CERTIFICATE-----
MIIELTCCAxWgAwIBAgIJAKshFHHXXhrGMA0GCSqGSIb3DQEBBQUAMGwxCzAJBgNV
BAYTAlVTMQswCQYDVQQIEwJDQTERMA8GA1UEBxMIT3JvdmlsbGUxHjAcBgNVBAoT
FUNDQyBUZWNobm9sb2d5IENlbnRlcjEdMBsGA1UEAxMUc2FtbC5jY2N0Y3BvcnRh
bC5vcmcwHhcNMTYwMTE1MTkxNTEwWhcNMjEwMTEzMTkxNTEwWjBsMQswCQYDVQQG
EwJVUzELMAkGA1UECBMCQ0ExETAPBgNVBAcTCE9yb3ZpbGxlMR4wHAYDVQQKExVD
Q0MgVGVjaG5vbG9neSBDZW50ZXIxHTAbBgNVBAMTFHNhbWwuY2NjdGNwb3J0YWwu
b3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Ox2MGZCIimvKXZ6
DsmfQajFY0Y3JKvRtqdBmlDo2ndtLNFIvlYzIYehYfwFdJJ3fcnkYWYm/Q1UWC1o
MnQtL1dh1x/ZHPArZEsBGNEvQjuhk9ztT43A/5sB7GHpM1CM0cZl32UdB49ETT3T
+f/I6ZDBE9MUPJpg0UjV1xurSig1mZHcY+As0rQwreV9/b2mnIn9St6tJAXBthfC
wDdpVcLXG3es2VS1MF3RfSRNQkKZT/nQO5f1yFNbVrOfiDB1zydhYMXzXJDh3OMp
gByOi9/PHUSaXdVs3xwF1Kd7HJQJf+iOgGGUUo3Tu9ADioJp07jGK/6uWMnaymSo
P/G5nQIDAQABo4HRMIHOMB0GA1UdDgQWBBQl3onu5BAL9in4WHshPJpxSd2P+DCB
ngYDVR0jBIGWMIGTgBQl3onu5BAL9in4WHshPJpxSd2P+KFwpG4wbDELMAkGA1UE
BhMCVVMxCzAJBgNVBAgTAkNBMREwDwYDVQQHEwhPcm92aWxsZTEeMBwGA1UEChMV
Q0NDIFRlY2hub2xvZ3kgQ2VudGVyMR0wGwYDVQQDExRzYW1sLmNjY3RjcG9ydGFs
Lm9yZ4IJAKshFHHXXhrGMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB
AHaZ7znhgCPD0GwvU/toYFXxLOLedbnPB9CmebJSc6pGWg+uEGCaMZrpYbIpaHqR
tk3repXsSuZ3Q6yGddNyjelND+88kIak2A3xl/dS1yhvo9MusrKzis4VO1zgXmDS
FqqGw20Cc/xNdD6sTWEIh5fq/gaGrVv1yBGtGrvtGXIfQ1Nwin1GF07s+M7lkmVz
bMRrobcqOK0WNye1EdXw8vk4owpdlTmgos/wSiQi8jhVAilsuzAk6h7cAQuoFyqA
HY8tF8nsz3skKoDgZVRJmzesPkRKRszYtC/aUDlZje9uHQINKuCcCLFKI1paYiHR
BeRdoPK3OIBsGglKA7aC3lk=
-----END CERTIFICATE-----


Configure the Attributes

Minimum Required Attributes

Make sure you understand and have all the following required attributes available.

Simple Name and the SAMLv2 name when sent in the SAMLv2 responseShort descriptionSample value(s)Description

eduPersonPrincipalName (EPPN)


urn:oid:1.3.6.1.4.1.5923.1.1.1.6

The primary federated identifier of a given user from a college/district IdP.

jsmith@college.edu

12345678@college.edu


EPPN has the syntax of an email address, but it should be considered a "globally unique federated identifier" rather than an email address. It is generally the most important attribute to be shared with federated services. Note that the value of EPPN does not have to match what the user fills in as their username when they login, and the user does not need to know what their EPPN is, as it is shared between the IdP and the service. It should be unique, rarely change, and not be reassigned to another person.

eduPersonAffiliation

urn:oid:1.3.6.1.4.1.5923.1.1.1.1

Role within the institution
  • staff
  • student
  • member

All of the roles a given person has within the college. This is the only attribute listed here that is intended to have multiple values. All the rest are expected to have a single value.

uid

urn:oid:0.9.2342.19200300.100.1.1

UsernamejsmithThis is usually the value that the user fills in as their username when they login. If you are using AD, the usual attribute you want to use to populate uid is the sAMAccountName attribute.

givenName

urn:oid:2.5.4.42

First NameJane

sn (surname)

urn:oid:2.5.4.4

Last NameSmith

displayName

urn:oid:2.16.840.1.113730.3.1.241

Full name to display

Jane Smith

mail (email)

urn:oid:0.9.2342.19200300.100.1.3

Email Addressjane.smith@college.edu

cccId

https://www.openccc.net/

saml/attributes/cccId


Unique id for a student within the CCC system
The CCCID is a critical attribute for students. If not specified, but required for a portal or service action, the CCCID will be looked up via the EPPN. If no match is found, the action cannot be performed until the user creates a CCCID via the OpenCCC portlet.

Additional Recommended Attributes

Below are additional attributes that can be sent by the college. These attributes are not required, but are highly recommended and can be useful for pre-populating values required to create a central CCCID account.

Simple Name and the SAMLv2 name when sent in the SAMLv2 responseShort descriptionSample value(s)Description

eduPersonPrimaryAffiliation

urn:oid:1.3.6.1.4.1.5923.1.1.1.5

Primary role at the institution
  • staff
  • student
  • faculty
Must be one of the values specified in eduPersonAffilliation. If the eduPersonAffiliation attribute has many values, the primary affiliation should reflect the role to be associated with services that differentiate based on this value (such as the CCC Portal).

street

urn:oid:2.5.4.9

Street address

303 Mulberry St.


locality
urn:oid:2.5.4.7
CityMetropolis

st

urn:oid:2.5.4.8

State or Province name

CA

postalCode

urn:oid:2.5.4.17

Postal or zip code12345

homePhone

urn:oid:0.9.2342.19200300.100.1.20

Home Phone Number+1 212 555 1234

mobile

urn:oid:0.9.2342.19200300.100.1.41

Mobile Phone Number+1 775 555 6789


Release Attributes to Proxy Instances

The last step is to configure your college/district IdP to release the above attributes to the SSO GW entityIDs. To do this, edit your IdP's conf/attribute-filter.xml file and add the lines below. You will have to verify whether you've configured your IdP's conf/attribute-resolver.xml file to generate the following attributes with the same "id" as referenced below, and if not, adjust the below to match the "id" you used.


<!-- 
     Release all required and optional attributes, for any service, 
     to the CCC IdP Proxy, so it in turn can release only the
     needed attributes to the services on the other side
     of the IdP Proxy. All attributes will not be sent to all services,
     just the needed ones for a given service. The attributes here should
     constitute a "union" of all possible attributes for any service.
-->
<AttributeFilterPolicy id="CCCWideReleaseForIdPProxy">
	<PolicyRequirementRule xsi:type="OR">
		<Rule xsi:type="Requester" value="https://sso.pilot.cccmypath.org/simplesaml/module.php/saml/sp/metadata.php"/>
		<Rule xsi:type="Requester" value="https://sso.cccmypath.org/simplesaml/module.php/saml/sp/metadata.php"/>
	</PolicyRequirementRule>
	<AttributeRule attributeID="eduPersonPrincipalName">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
	<AttributeRule attributeID="uid">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
	<AttributeRule attributeID="email">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
	<AttributeRule attributeID="givenName">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
	<AttributeRule attributeID="surname">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
	<AttributeRule attributeID="displayName">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
	<AttributeRule attributeID="eduPersonAffiliation">
		<PermitValueRule xsi:type="OR">
			<Rule xsi:type="Value" value="faculty" ignoreCase="true"/>
			<Rule xsi:type="Value" value="student" ignoreCase="true"/>
			<Rule xsi:type="Value" value="staff" ignoreCase="true"/>
			<Rule xsi:type="Value" value="alum" ignoreCase="true"/>
			<Rule xsi:type="Value" value="member" ignoreCase="true"/>
			<Rule xsi:type="Value" value="affiliate" ignoreCase="true"/>
			<Rule xsi:type="Value" value="employee" ignoreCase="true"/>
			<Rule xsi:type="Value" value="library-walk-in" ignoreCase="true"/>
		</PermitValueRule>
	</AttributeRule>
	<AttributeRule attributeID="eduPersonPrimaryAffiliation">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>

	<!-- CCC specific attributes -->
	<AttributeRule attributeID="cccId">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
	<AttributeRule attributeID="cccMisCode">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>

	<!-- Less likely attributes to be populated, but release if available -->
	<AttributeRule attributeID="mobileNumber">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
	<AttributeRule attributeID="homePhone">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
	<AttributeRule attributeID="telephoneNumber">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
	<AttributeRule attributeID="postalAddress">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
	<AttributeRule attributeID="street">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
	<AttributeRule attributeID="locality">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
	<AttributeRule attributeID="stateProvince">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
	<AttributeRule attributeID="postalCode">
		<PermitValueRule xsi:type="ANY"/>
	</AttributeRule>
</AttributeFilterPolicy>