SlideShare ist ein Scribd-Unternehmen logo
1 von 33
5/13/14 Apereo Miami 2014 1
How to CASify PeopleSoft, and
integrating CAS and ADFS
Byran Wooten: bryan.wooten@utah.edu
John Gasper: jgasper@unicon.net
Misagh Moayyed: mmoayyed@unicon.net
5/13/14 Apereo Miami 2014 2
•We will cover the integration and configuration points
to easily CASify PeopleSoft with minimal custom.
•We will also review several options for integrating your
CAS Server with Microsoft's ADFS Server. This is
particularly helpful if you are an Office 365 customer or
you have client applications that utilized Windows
Identity Foundation (WIF) and want to integrate the SSO
experience.
This Session
5/13/14
5/13/14
Unicon: John Gasper, Misagh Moayyed
•Members of IAM practice at Unicon
•Emphasis on CAS, Shibboleth, Grouper, etc
•Provide commercial support through OSS program
5/13/14 5Apereo Miami 2014
How to
ify
5/13/14 Apereo Miami 2014 6
Objective
CASify Peoplesoft web application via the Java
CAS client
•Populate REMOTE_USER with CAS principal id
•Peoplecode function to authenticate
Request.RemoteUser into Peoplesoft
5/13/14 Apereo Miami 2014 7
1.Add CAS filters to the Weblogic web.xml
2.Add logic to Signon PeopleCode (FUNCLIBLDAP)
3.Configure Signon PeopleCode
Only 3 steps are required.
So, it really is easy!
5/13/14 Apereo Miami 2014 8
•Add CAS Filters to web.xml in this location:
/<peoplesoft-webapp-directory>/PORTAL/WEB-INF
•Don’t forget to add the CAS client jar to the classpath:
/<peoplesoft-webapp-directory>/PORTAL/WEB-INF/lib/cas-client-core-3.3.1.jar
You may need to add the CAS Certificate to the
•Peoplesoft keystore:
/ps/pltest/weblogic/jdk150/jre/lib/security/cacerts
Step 1
5/13/14 Apereo Miami 2014 9
5/13/14 Apereo Miami 2014 10
Step 2:
Modify Signon PeopleCode
CAS_AUTHENTICATION()
5/13/14 Apereo Miami 2014 11
•A default “guest” user must be created with the most basic permissions to be attached to
the CAS Web Profile. (Allow Public Users = Checked)
•CAS_AUTHENTICATION needs be enabled through signon peoplecode. The function uses the remote user in the
request headers as a authenticated user and retrieves the appropriate distinguished name from the directory.
•Valid user role that has the necessary permissions required to execute and invoke the Peoplecode function.
•The profile must be activated in PeopleSoft under the WebProfile setting, inside
the configuration.properties
•If all goes well, &global_DN is set and setAuthenticationResult() sets the user context to the correct
userID.
Peoplesoft WebProfile
5/13/14 Apereo Miami 2014 12
Function CAS_AUTHENTICATION()
&logger = initLogger();
&logger.info("CAS_AUTHENTICATION ============ Start of CAS_AUTHENTICATION =============
(" | %SignonUserId | ")");
printRequestHeaders();
If &bConfigRead = False Then
getLDAPConfig();
End-If;
&cas_result = %Request.RemoteUser;
If &cas_result <> "" Then
/* User is authenticated, log them into PeopleSoft */
&logger.info(" CAS_AUTHENTICATION - " | "Remote user = " | &cas_result | " logged in
by CAS_AUTHENTICATION");
SetAuthenticationResult( True, Upper(&cas_result), "", False);
&authMethod = "CAS";
&CAS_userid = &cas_result;
&sql_PSOPRDEFN = CreateSQL("Select FAILEDLOGINS from PSOPRDEFN where OPRID=:1",
Upper(&cas_result));
&ret = &sql_PSOPRDEFN.Fetch(&failedLogin);
If (&failedLogin <> 0) Then
SQLExec("update PSOPRDEFN set FAILEDLOGINS=0 where OPRID=:1", Upper(&cas_result));
End-If;
CAS_AUTHENTICATION()
5/13/14 Apereo Miami 2014 13
/* set &global_DN for profilesync */
For &J1 = 1 To &authMaps.Len
&DNs = CreateArrayRept("", 0);
If (idToDN(&cas_result, &DNs, &authMaps [&J1])) Then
For &I1 = 1 To &DNs.Len
/* Take the first DN found as the &global_DN */
&global_DN = &DNs [&I1];
&idxAuthMap = &J1;
/** &global_DN = "unid=" | &cas_result |
",ou=people,o=utah.edu"; **/
&logger.info("CAS_AUTHENTICATION - ***** &authMethod =
CAS ***** ===== (" | &cas_result | ")/" | &global_DN | "/" |
&authMaps [&J1].getAuthMapID());
Return;
End-For;
End-If;
End-For;
End-If;
&logger.info("CAS_AUTHENTICATION - Did not authenticate by
CAS_AUTHENTICATION (" | %SignonUserId | ")");
End-Function;
5/13/14 Apereo Miami 2014 14
Step 3
Configure Signon Peoplecode
Note: “Invoke As” fields must be set to the credentials of the user created inside the web
profile to execute the peoplecode function. Ensure that both LDAP authentication and
profile sync are turned on, and “Exec Auth Fail” is checked for both.
5/13/14 Apereo Miami 2014 15
In the WebProfile, specify a new signout.html for signout
•Place the file at /<peoplesoft-directory>/PORTAL.war/WEB-INF/psftdocs/CS89PS
•Edit the file:
Signout
5/13/14 Apereo Miami 2014 16
•Ensure CAS_AUTHENTICATION() function logs activity to file
•Test webprofile using cmd=start:
https://sys.peoplesoft.edu:8703/psp/CS89PS/?cmd=start&languageCd=ENG
Log into peoplesoft using the account configured to invoke
•CAS_AUTHENTICATION()
•Almost ALL changes require a PeopleSoft web application restart
Tips & Suggestions
5/13/14 Apereo Miami 2014 17
•Deep linking vs. Peoplesoft “caching”
•Peoplesoft vs. CAS account mapping
•Single signout
Issues & Troubleshooting
5/13/14 Apereo Miami 2014 18
•Microsoft ADFS is yet another SSO
environment that competes in the same
spaces as CAS and Shibboleth.
•Why would you integrated ADFS with CAS?
lOffice 365?
lPreviously developed ASP.NET/Windows
Identity Foundation apps that utilize an
STS, like ADFS.
Integrating CAS and
Microsoft ADFS
5/13/14 Apereo Miami 2014 19
•CAS as an RP: Fronting CAS with ADFS
•CASifying ADFS: Front ADFS with CAS
•ADFS as an SP: Front ADFS with CAS*
Integrating CAS and
Microsoft ADFS
5/13/14 Apereo Miami 2014 20
Front CAS with ADFS
5/13/14 Apereo Miami 2014 21
Front CAS with ADFS
5/13/14 Apereo Miami 2014 22
Front CAS with ADFS
pom.xml
<!-- ADFS Integration -->
<dependency>
<groupId>net.unicon.cas</groupId>
<artifactId>cas-server-support-
wsfederation</artifactId>
<version>1.0.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
5/13/14 Apereo Miami 2014 23
Front CAS with ADFS
spring-config/wsfederation.xml
<bean id="wsFedConfig" class="net.unicon.cas.support.wsfederation.WsFederationConfiguration">
<property name="identityProviderIdentifier" value="http://adfs.example.org/adfs/services/trust" />
<property name="identityProviderUrl" value="https://adfs.example.org/adfs/ls/" />
<property name="identityAttribute" value="upn" />
<property name="relyingPartyIdentifier" value="urn:federation:cas" />
<property name="tolerance" value="60000" />
<property name="attributeMutator">
<bean class="org.example.cas.support.wsfederation.WsFedAttributeMutatorImpl" />
</property>
<property name="signingCertificateFiles">
<list>
<value>file:/etc/cas/signing.cer</value>
</list>
</property>
</bean>
5/13/14 Apereo Miami 2014 24
Front CAS with ADFS
login-webflow.xml
<action-state id="wsFederationAction">
<evaluate expression="wsFederationAction" />
<transition on="success" to="sendTicketGrantingTicket" />
<transition on="error" to="ticketGrantingTicketExistsCheck" />
</action-state>
<view-state id="WsFederationRedirect"
view="externalRedirect:${WsFederationIdentityProviderUrl}"/>
5/13/14 Apereo Miami 2014 25
Front CAS with ADFS
5/13/14 Apereo Miami 2014 26
Front CAS with ADFS
5/13/14 Apereo Miami 2014 27
Front CAS with ADFS
5/13/14 Apereo Miami 2014 28
Front CAS with ADFS
Attribute Mutator: clean-up or map your attributes
coming from ADFS, but before they are released.
attributes.put("upn",
attributes.get("upn").toString().replace("@example.org", ""));
attributeMapping(attributes, "surname", "LastName");
attributeMapping(attributes, "givenname", "FirstName");
attributeMapping(attributes, "Group", "Groups");
attributeMapping(attributes, "employeeNumber", "UDC_IDENTIFIER");
5/13/14 Apereo Miami 2014 29
CASifying ADFS
Utilizes .NET CAS Client and ClearPass:
1) Drop in the DotNetCasClient.dll (v1.0.1).
2) Configure web.config.
3) Add code to FormsSignIn.aspx.cs.
5/13/14 Apereo Miami 2014 30
CASifying ADFS
Utilizes .NET CAS Client and ClearPass:
Username=Page.User.Identity.Name;
proxyTicket =
CasAuthentication.GetProxyTicketIdFor(ClearPassUrl);
clearPassRequest = ClearPassUrl + "?" +
ArtifactParameterName + "=" + proxyTicket + "&" +
ServiceParameterName + "=" + ClearPassUrl;
Password = XmlUtils.GetTextForElement(clearPassResponse,
"cas:credentials");
SignIn(Username, Password);
5/13/14 Apereo Miami 2014 31
CASifying ADFS
This may or may not work on ADFS on Windows
Server 2012 R2.
The .cs files are embedded in
C:WindowsadfsMicrosoft.IdentityServer.Web.dll
Visual Studio should allow you to alter the files.
5/13/14 Apereo Miami 2014 32
ADFS as an SP
Theoretically, we can use CAS's Google
Apps/SAML 2.0 support to connect to ADFS.
Pros: No significant mods to ADFS or CAS.
Let me know if you are interested in
collaborating on this.
https://github.com/unicon/cas-adfs-integration

Weitere ähnliche Inhalte

Was ist angesagt? (6)

Phishing
PhishingPhishing
Phishing
 
CAS, OpenID, SAML : concepts, diffĂŠrences et exemples
CAS, OpenID, SAML : concepts, diffĂŠrences et exemplesCAS, OpenID, SAML : concepts, diffĂŠrences et exemples
CAS, OpenID, SAML : concepts, diffĂŠrences et exemples
 
金融APIセキュリティの動向・事例と今後の方向性
金融APIセキュリティの動向・事例と今後の方向性金融APIセキュリティの動向・事例と今後の方向性
金融APIセキュリティの動向・事例と今後の方向性
 
Ransomware - The Growing Threat
Ransomware - The Growing ThreatRansomware - The Growing Threat
Ransomware - The Growing Threat
 
PHISHING attack
PHISHING attack PHISHING attack
PHISHING attack
 
Mian
MianMian
Mian
 

Ähnlich wie How to CASifying PeopleSoft and Integrating CAS and ADFS

jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
Kiril Iliev
 
ASP.Net Presentation Part3
ASP.Net Presentation Part3ASP.Net Presentation Part3
ASP.Net Presentation Part3
Neeraj Mathur
 
Spca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_librariesSpca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_libraries
NCCOMMS
 
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
Tieturi Oy
 
2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...
2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...
2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...
Andrey Devyatkin
 
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012 Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Atlassian
 

Ähnlich wie How to CASifying PeopleSoft and Integrating CAS and ADFS (20)

jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
 
FamilySearch Reference Client
FamilySearch Reference ClientFamilySearch Reference Client
FamilySearch Reference Client
 
ASP.Net Presentation Part3
ASP.Net Presentation Part3ASP.Net Presentation Part3
ASP.Net Presentation Part3
 
PuppetConf 2016: The Long, Twisty Road to Automation: Implementing Puppet at ...
PuppetConf 2016: The Long, Twisty Road to Automation: Implementing Puppet at ...PuppetConf 2016: The Long, Twisty Road to Automation: Implementing Puppet at ...
PuppetConf 2016: The Long, Twisty Road to Automation: Implementing Puppet at ...
 
Burn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websitesBurn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websites
 
Spca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_librariesSpca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_libraries
 
Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3
 
Old WP REST API, New Tricks
Old WP REST API, New TricksOld WP REST API, New Tricks
Old WP REST API, New Tricks
 
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
 
Php frameworks
Php frameworksPhp frameworks
Php frameworks
 
Summit2014 topic 0066 - 10 enhancements that require 10 lines of code
Summit2014 topic 0066 - 10 enhancements that require 10 lines of codeSummit2014 topic 0066 - 10 enhancements that require 10 lines of code
Summit2014 topic 0066 - 10 enhancements that require 10 lines of code
 
Passwords suck, but centralized proprietary services are not the answer
Passwords suck, but centralized proprietary services are not the answerPasswords suck, but centralized proprietary services are not the answer
Passwords suck, but centralized proprietary services are not the answer
 
Community call: Develop multi tenant apps with the Microsoft identity platform
Community call: Develop multi tenant apps with the Microsoft identity platformCommunity call: Develop multi tenant apps with the Microsoft identity platform
Community call: Develop multi tenant apps with the Microsoft identity platform
 
SharePoint 2010 authentications
SharePoint 2010 authenticationsSharePoint 2010 authentications
SharePoint 2010 authentications
 
2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...
2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...
2020-02-20 - HashiTalks 2020 - HashiCorp Vault configuration as code via Hash...
 
How to convert custom plsql to web services-Soap OR Rest
How to convert custom plsql to web services-Soap OR RestHow to convert custom plsql to web services-Soap OR Rest
How to convert custom plsql to web services-Soap OR Rest
 
Mozilla Web Apps - Super-VanJS
Mozilla Web Apps - Super-VanJSMozilla Web Apps - Super-VanJS
Mozilla Web Apps - Super-VanJS
 
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012 Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
 
Monkey man
Monkey manMonkey man
Monkey man
 
Aspnet 4 new features
Aspnet 4 new featuresAspnet 4 new features
Aspnet 4 new features
 

KĂźrzlich hochgeladen

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

KĂźrzlich hochgeladen (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

How to CASifying PeopleSoft and Integrating CAS and ADFS

  • 1. 5/13/14 Apereo Miami 2014 1 How to CASify PeopleSoft, and integrating CAS and ADFS Byran Wooten: bryan.wooten@utah.edu John Gasper: jgasper@unicon.net Misagh Moayyed: mmoayyed@unicon.net
  • 2. 5/13/14 Apereo Miami 2014 2 •We will cover the integration and configuration points to easily CASify PeopleSoft with minimal custom. •We will also review several options for integrating your CAS Server with Microsoft's ADFS Server. This is particularly helpful if you are an Office 365 customer or you have client applications that utilized Windows Identity Foundation (WIF) and want to integrate the SSO experience. This Session
  • 4. 5/13/14 Unicon: John Gasper, Misagh Moayyed •Members of IAM practice at Unicon •Emphasis on CAS, Shibboleth, Grouper, etc •Provide commercial support through OSS program
  • 5. 5/13/14 5Apereo Miami 2014 How to ify
  • 6. 5/13/14 Apereo Miami 2014 6 Objective CASify Peoplesoft web application via the Java CAS client •Populate REMOTE_USER with CAS principal id •Peoplecode function to authenticate Request.RemoteUser into Peoplesoft
  • 7. 5/13/14 Apereo Miami 2014 7 1.Add CAS filters to the Weblogic web.xml 2.Add logic to Signon PeopleCode (FUNCLIBLDAP) 3.Configure Signon PeopleCode Only 3 steps are required. So, it really is easy!
  • 8. 5/13/14 Apereo Miami 2014 8 •Add CAS Filters to web.xml in this location: /<peoplesoft-webapp-directory>/PORTAL/WEB-INF •Don’t forget to add the CAS client jar to the classpath: /<peoplesoft-webapp-directory>/PORTAL/WEB-INF/lib/cas-client-core-3.3.1.jar You may need to add the CAS Certificate to the •Peoplesoft keystore: /ps/pltest/weblogic/jdk150/jre/lib/security/cacerts Step 1
  • 10. 5/13/14 Apereo Miami 2014 10 Step 2: Modify Signon PeopleCode CAS_AUTHENTICATION()
  • 11. 5/13/14 Apereo Miami 2014 11 •A default “guest” user must be created with the most basic permissions to be attached to the CAS Web Profile. (Allow Public Users = Checked) •CAS_AUTHENTICATION needs be enabled through signon peoplecode. The function uses the remote user in the request headers as a authenticated user and retrieves the appropriate distinguished name from the directory. •Valid user role that has the necessary permissions required to execute and invoke the Peoplecode function. •The profile must be activated in PeopleSoft under the WebProfile setting, inside the configuration.properties •If all goes well, &global_DN is set and setAuthenticationResult() sets the user context to the correct userID. Peoplesoft WebProfile
  • 12. 5/13/14 Apereo Miami 2014 12 Function CAS_AUTHENTICATION() &logger = initLogger(); &logger.info("CAS_AUTHENTICATION ============ Start of CAS_AUTHENTICATION ============= (" | %SignonUserId | ")"); printRequestHeaders(); If &bConfigRead = False Then getLDAPConfig(); End-If; &cas_result = %Request.RemoteUser; If &cas_result <> "" Then /* User is authenticated, log them into PeopleSoft */ &logger.info(" CAS_AUTHENTICATION - " | "Remote user = " | &cas_result | " logged in by CAS_AUTHENTICATION"); SetAuthenticationResult( True, Upper(&cas_result), "", False); &authMethod = "CAS"; &CAS_userid = &cas_result; &sql_PSOPRDEFN = CreateSQL("Select FAILEDLOGINS from PSOPRDEFN where OPRID=:1", Upper(&cas_result)); &ret = &sql_PSOPRDEFN.Fetch(&failedLogin); If (&failedLogin <> 0) Then SQLExec("update PSOPRDEFN set FAILEDLOGINS=0 where OPRID=:1", Upper(&cas_result)); End-If; CAS_AUTHENTICATION()
  • 13. 5/13/14 Apereo Miami 2014 13 /* set &global_DN for profilesync */ For &J1 = 1 To &authMaps.Len &DNs = CreateArrayRept("", 0); If (idToDN(&cas_result, &DNs, &authMaps [&J1])) Then For &I1 = 1 To &DNs.Len /* Take the first DN found as the &global_DN */ &global_DN = &DNs [&I1]; &idxAuthMap = &J1; /** &global_DN = "unid=" | &cas_result | ",ou=people,o=utah.edu"; **/ &logger.info("CAS_AUTHENTICATION - ***** &authMethod = CAS ***** ===== (" | &cas_result | ")/" | &global_DN | "/" | &authMaps [&J1].getAuthMapID()); Return; End-For; End-If; End-For; End-If; &logger.info("CAS_AUTHENTICATION - Did not authenticate by CAS_AUTHENTICATION (" | %SignonUserId | ")"); End-Function;
  • 14. 5/13/14 Apereo Miami 2014 14 Step 3 Configure Signon Peoplecode Note: “Invoke As” fields must be set to the credentials of the user created inside the web profile to execute the peoplecode function. Ensure that both LDAP authentication and profile sync are turned on, and “Exec Auth Fail” is checked for both.
  • 15. 5/13/14 Apereo Miami 2014 15 In the WebProfile, specify a new signout.html for signout •Place the file at /<peoplesoft-directory>/PORTAL.war/WEB-INF/psftdocs/CS89PS •Edit the file: Signout
  • 16. 5/13/14 Apereo Miami 2014 16 •Ensure CAS_AUTHENTICATION() function logs activity to file •Test webprofile using cmd=start: https://sys.peoplesoft.edu:8703/psp/CS89PS/?cmd=start&languageCd=ENG Log into peoplesoft using the account configured to invoke •CAS_AUTHENTICATION() •Almost ALL changes require a PeopleSoft web application restart Tips & Suggestions
  • 17. 5/13/14 Apereo Miami 2014 17 •Deep linking vs. Peoplesoft “caching” •Peoplesoft vs. CAS account mapping •Single signout Issues & Troubleshooting
  • 18. 5/13/14 Apereo Miami 2014 18 •Microsoft ADFS is yet another SSO environment that competes in the same spaces as CAS and Shibboleth. •Why would you integrated ADFS with CAS? lOffice 365? lPreviously developed ASP.NET/Windows Identity Foundation apps that utilize an STS, like ADFS. Integrating CAS and Microsoft ADFS
  • 19. 5/13/14 Apereo Miami 2014 19 •CAS as an RP: Fronting CAS with ADFS •CASifying ADFS: Front ADFS with CAS •ADFS as an SP: Front ADFS with CAS* Integrating CAS and Microsoft ADFS
  • 20. 5/13/14 Apereo Miami 2014 20 Front CAS with ADFS
  • 21. 5/13/14 Apereo Miami 2014 21 Front CAS with ADFS
  • 22. 5/13/14 Apereo Miami 2014 22 Front CAS with ADFS pom.xml <!-- ADFS Integration --> <dependency> <groupId>net.unicon.cas</groupId> <artifactId>cas-server-support- wsfederation</artifactId> <version>1.0.0-SNAPSHOT</version> <scope>compile</scope> </dependency>
  • 23. 5/13/14 Apereo Miami 2014 23 Front CAS with ADFS spring-config/wsfederation.xml <bean id="wsFedConfig" class="net.unicon.cas.support.wsfederation.WsFederationConfiguration"> <property name="identityProviderIdentifier" value="http://adfs.example.org/adfs/services/trust" /> <property name="identityProviderUrl" value="https://adfs.example.org/adfs/ls/" /> <property name="identityAttribute" value="upn" /> <property name="relyingPartyIdentifier" value="urn:federation:cas" /> <property name="tolerance" value="60000" /> <property name="attributeMutator"> <bean class="org.example.cas.support.wsfederation.WsFedAttributeMutatorImpl" /> </property> <property name="signingCertificateFiles"> <list> <value>file:/etc/cas/signing.cer</value> </list> </property> </bean>
  • 24. 5/13/14 Apereo Miami 2014 24 Front CAS with ADFS login-webflow.xml <action-state id="wsFederationAction"> <evaluate expression="wsFederationAction" /> <transition on="success" to="sendTicketGrantingTicket" /> <transition on="error" to="ticketGrantingTicketExistsCheck" /> </action-state> <view-state id="WsFederationRedirect" view="externalRedirect:${WsFederationIdentityProviderUrl}"/>
  • 25. 5/13/14 Apereo Miami 2014 25 Front CAS with ADFS
  • 26. 5/13/14 Apereo Miami 2014 26 Front CAS with ADFS
  • 27. 5/13/14 Apereo Miami 2014 27 Front CAS with ADFS
  • 28. 5/13/14 Apereo Miami 2014 28 Front CAS with ADFS Attribute Mutator: clean-up or map your attributes coming from ADFS, but before they are released. attributes.put("upn", attributes.get("upn").toString().replace("@example.org", "")); attributeMapping(attributes, "surname", "LastName"); attributeMapping(attributes, "givenname", "FirstName"); attributeMapping(attributes, "Group", "Groups"); attributeMapping(attributes, "employeeNumber", "UDC_IDENTIFIER");
  • 29. 5/13/14 Apereo Miami 2014 29 CASifying ADFS Utilizes .NET CAS Client and ClearPass: 1) Drop in the DotNetCasClient.dll (v1.0.1). 2) Configure web.config. 3) Add code to FormsSignIn.aspx.cs.
  • 30. 5/13/14 Apereo Miami 2014 30 CASifying ADFS Utilizes .NET CAS Client and ClearPass: Username=Page.User.Identity.Name; proxyTicket = CasAuthentication.GetProxyTicketIdFor(ClearPassUrl); clearPassRequest = ClearPassUrl + "?" + ArtifactParameterName + "=" + proxyTicket + "&" + ServiceParameterName + "=" + ClearPassUrl; Password = XmlUtils.GetTextForElement(clearPassResponse, "cas:credentials"); SignIn(Username, Password);
  • 31. 5/13/14 Apereo Miami 2014 31 CASifying ADFS This may or may not work on ADFS on Windows Server 2012 R2. The .cs files are embedded in C:WindowsadfsMicrosoft.IdentityServer.Web.dll Visual Studio should allow you to alter the files.
  • 32. 5/13/14 Apereo Miami 2014 32 ADFS as an SP Theoretically, we can use CAS's Google Apps/SAML 2.0 support to connect to ADFS. Pros: No significant mods to ADFS or CAS. Let me know if you are interested in collaborating on this.

Hinweis der Redaktion

  1. 5