SlideShare a Scribd company logo
DEV-1430 IBM Connections Integration
Exploring the Long List of Options
Disclaimer
2 2/24/17
• Some of the techniques exposed in the session might not be documented by
IBM and thus do engage IBM in anyway
• Some of these techniques might not work after an upgrade of either IBM
Connections cloud or IBM Connections on premises
• USE OF THIS INFORMATION IS ENTIRELY AT YOUR OWN RISK.
TRILOGGROUP AND DARWINO INC BEAR NO RESPONSIBILITY FOR
THE CONSEQUENCES OF RELIANCE ON, OR ANY INACCURACY IN,
ANY INFORMATION CONTAINED IN OR SUBMITTED TO THIS SITE.
THESE MATERIALS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESS OR IMPLIED.
About the Speakers
3 2/24/17
• Jesse Gallagher
CTO of I Know Some Guys
Board Member of OpenNTF
• Philippe Riand
CTO of Trilog Group & Darwino Inc.
Former application development chief architect for
IBM Collaboration Services
Chief architect, and inventor, of IBM Domino
XPages
Who Are We?
4 2/24/17
• TrilogGroup offers a Social Project Management solution called ProjExec
IBM partner for 20+ years
Fully integrated within the IBM platform
Connections cloud and on-premises
Often referenced by IBM as an integration example
• Darwino is an application development platform targeting mobile, cloud, and IoT
Darwino is well-integrated with IBM platforms, including IBM Connections, IBM
Domino, IBM Bluemix and IBM Watson
darwino.org, a branch of OpenNTF, is the open source organization
providing the Connections integration code shown in this session
We are in the showcase, booth 630
Objectives of the Session
5 2/24/17
• Demonstrate the techniques used by a real application to integrate with IBM
Connections, cloud & on-premises
• Show the differences between cloud and on-premises platforms and how to
adapt to them
• Introduce the open-source Darwino libraries abstracting the differences,
along with the sample code
Open Source project
6 2/24/17
• All the code shown here is *real* and available as an open source project on
Darwino.Org
• The source code is on Github:
https://github.com/darwino-org/Darwino-Connections
• It is currently made of 2 projects:
A reusable library
A demo application showing the capabilities
• It is using the darwino-commons library for convenience, which is available
as a community edition
The library is actually a subset of the full Darwino library
Authentication
Avoid multiple logins and share the same user identity
7 2/24/17
ProjExec
8 2/24/17
Authenticating on the Cloud
9 2/24/17
• ProjExec uses the IBM Connections Cloud authentication mechanism
SAML is not an option because the identity provider has to be Connections
Single sign-on is not an option because the servers are running from
different domains (no LTPA token)
Should not use basic authentication as it forces your server to store the
user/password
• The solution is to use OAuth: Authentication through Authorization
ProjExec triggers the OAuth dance to get an access token for the current
user
Any call to Connections Cloud services use the same token
A call to the people service to get the identity of the current user
/manage/oauth/getUserIdentity
Pros and Cons of using OAuth
10 2/24/17
• Works similarly on the cloud and on-premises
Well, almost – there are inconsistencies in the code that force the
application to use 2 code streams (use IBM SBT or Darwino core libs!)
connections/opensocial/oauth/rest/people/@me/@self
• The user has to grant access to the application the very first time
Once done, there is no way for the user to change that!
On-premises has a UI to manage OAuth access, but not on the cloud
• The dance is always run, but it is often seamless
If already authenticated to Connections, the login page does not appear
The user does have grant access for every single session
Authenticating On-Premises – Single Sign-On
11 2/24/17
• Uses IBM Single Sign-on technology – LTPA
Works on top of IBM servers, ideally the same WAS server
Runs in the same domain
• The authentication is seamless but you need to configure your app to use
the Connections login page
/profiles/login
WAS uses a cookie to redirect to the initial page (WASReqURL)
• There is also a Mobile login page when connecting from mobile devices
/mobile/admin/Login
Create your own login page that redirects to one or the other (by checking
the cookie above)
Custom Code Demo
12 2/24/17
Calling Services
13 2/24/17
• The OAuth Token, or the LTPA2 token can be used to call REST services on
the behalf of the user
• Be careful: some services requires the auth mode to be part of the URL
/connections/opensocial/{basic|oauth}/rest/people/{userI
d}/{groupId}
Integrating into the NavBar
Make your application visible in Connections
14 2/24/17
ProjExec
15 2/24/17
Integrating with the Cloud NavBar
16 2/24/17
• The integration should be done by an
organization administrator through the
Administration page
Has to be done on a per organization basis
This integration is basic as there is no way
to hide/show the option
• A partner can work with IBM to get its
application available as an “integrated 3
rd
party”
The process is currently heavyweight
This might change in the near future thanks to
an application catalog
Integrating with the On-Premises NavBar
17 2/24/17
• Done by customizing the IBM Connections JSPs
This has to be repeated after a new Connections installation
• Documented by IBM in the Customization Guide
https://www.ibm.com/support/knowledgecenter/SSYGQH_5.5.0/admin/custo
mize/t_admin_common_customize_main.html
Add your application to template/menu/apps.jsp
In the directory CONNECTIONS_CUSTOMIZATION_PATH
There is a ‘debug mode’ so you can do the changes without having to
restart the applications
• As it is done with JSPs, it is easy to hide/show an application for a user
http://blog.riand.com/2014/07/filtering-connections-applications.html
Custom Code Demo
18 2/24/17
Darwino
--%><tr><%--
--%><th scope="row" class="lotusNowrap"><%--
--%><img style="width:16px;height:16px;"
src="data:image/png;base64,iVBORw..."
alt="" role="presentation"><%--
--%><a href="/darwino-connections"><%--
--%><strong>Darwino Demo</strong><%--
--%></a><%--
--%></th><%--
--%><td class="lotusNowrap"><%--
--%><a href="https://localhost:8443/darwino-connections"><%--
--%>Darwino Demo Local<%--
--%></a><%--
--%></td><%--
--%></tr><%--
Get the Connections Look & Feel
Let the user feel that the application is part of IBM Connections
19 2/24/17
ProjExec
20 2/24/17
Integrate the NavBar: Connections Cloud
21 2/24/17
• This is the easiest and documented
https://www-
10.lotus.com/ldd/appdevwiki.nsf/xpDocViewer.xsp?lookupName=Toolkit+do
cs#action=openDocument&res_title=Adding_the_IBM_SmartCloud_for_Soc
ial_Business_banner_to_partner_applications_sbt&content=sdkcontent
• Just insert a JavaScript tag to your application
<script
src="https://<connections_server>/navbar/banner/<appName>/<divElementId>"></script>
• The banner recently evolved in June 2016 and then September 2016
Use an extra parameter to get the new version:
<script src="...navbar/banner/partner/<divElementId>?PNB=1"></script>
Make your Application Look Like Connections
22 2/24/17
• The look and feel consistency is achieved by using the same style sheet
Since V1, Connections used OneUI that has been documented until v3.0.3
http://infolib.lotus.com/resources/oneui/3.0/docPublic/index.htm
Now, it is called Hikari but the same style names seem to apply
But it is not documented anymore
What is next is unclear!
• On premises, the CSS are loaded with the header as explained before
• On the cloud, you have to load the CSS yourself from the Connections
server
Inspect the CSS loaded by a Connections app and load them explicitly
Custom Code Demo
23 2/24/17
Customizing the UI
Widgets, Gadgets, Community Applications
24 2/24/17
ProjExec
25 2/24/17
Comparing the Technologies
26 2/24/17
iWidgets
- Defined using an widget-config.xml files
- Renders inline HTML in the page
- Not secure for cloud deployment
- Added from the Connections admin UI or using script
OpenSocial Gadgets
- Defined using a gadget.xml file
- Renders within a controlled iFrame in the page
- Designed for pure client, single page apps
- Proprietary JavaScript API
- Platform-agnostic API, although poorly implemented in Connections
- Registered though script commands
Community Applications
- Defined using a JSON file
- Render a simple iFrame pointing to your URL
- No APIs available
- Communicate the context (community id, user, …) using a simple
postMessage(…) to the iFrame
- Registered from the Connections admin UI or using REST services
For Connections On-Premises
For the Embedded Experience
(includes the Notes client)
For Connections Cloud
(maybe Verse?)
Optimize your Development
27 2/24/17
• Three technologies for the same purpose: render your app in IBM’s UI!
But don’t write the same applications 3 times
• The rules
Write your “thing” to be embedded in a iFrame
Works in the cloud
Isolated context from the page/other components (CSS, JavaScript…)
Wrap the API calls into a common API, delegating to the underlying technology
Use the iFrame directly as an community application (or a gadget)
Create a generic iWidget definition inserting an iFrame
The Techniques
28 2/24/17
• On the cloud, a static HTML page is gathering the community information
Can redirect to another page
The parameters can then be sent to the server for processing
Ex: community ID
• On premises, the widget generates an <iframe> tag that loads the real page
Information can be gathered from the main page and sent to the iframe (not
implemented in the demo)
A resizing mechanism can also be implemented
• In both case, the body comes from the same code
Custom Code Demo
29 2/24/17
What Else?
Many other capabilities are available
30 2/24/17
Other Extensions to Consider
31 2/24/17
• Connections cloud
Add organization extensions, per service
BSS API, to access to use registration and guest users
Display the business card
• Connections on-premises
Customize the UI besides iWidgets – act on the JSPs
Display the business card
Participate in JavaScript aggregation
Since C5.0, pure client aggregation does not work
Create a Jazz OSGi plug-in and contribute your JS
SPIs
IBM Guest Speaker
How this will evolve in a near future
32 2/24/17
The Future of Connections Application Development
33 2/24/17
• Maureen Leland
Connections App Dev Chief Architect
Session to follow:
DEV-1048 : The Future Is PINK: IBM Connections Your
Way
Program : Development, Design and Tools
Topic : Enterprise collaboration
Session Type : Breakout Session
Date/Time : Wed, 22-Feb, 11:00 AM-11:45 AM
Location : Moscone West, Level 2 - Room 2007
Presenter(s) : Andre Hagemeier, IBM; Maureen Leland,
IBM
Thank you
34 2/24/17

More Related Content

PPTX
DEV-1467 - Darwino
PDF
Your App Deserves More – The Art of App Modernization
PDF
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
PDF
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
PDF
OpenNTF Domino API (ODA): Super-Charging Domino Development
PPT
Hnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
PPTX
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
PPT
Training on webwroks1
DEV-1467 - Darwino
Your App Deserves More – The Art of App Modernization
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
OpenNTF Domino API (ODA): Super-Charging Domino Development
Hnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Training on webwroks1

What's hot (20)

PDF
How adding a further tool can be a good thing
PDF
A hitchhiker’s guide to troubleshooting ibm connections
PPTX
Building out a Microservices Architecture with WebSphere Liberty Profile and ...
PPT
Java Development on Bluemix
PPTX
BlackBerry WebWorks
PDF
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
PDF
RIM Casual Meetup - Bandung #DevIDBdg
PDF
August OpenNTF Webinar - Git and GitHub Explained
PDF
AD101: IBM Domino Application Development Futures
PPTX
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
ODP
JMP102 Extending Your App Arsenal With OpenSocial
PDF
Cordova 3, apps para android
PDF
O365con14 - microsoft lync server 2013 online hybrid voice
PPTX
MS Insights Brazil 2015 containers and devops
ODP
JMP103 : Extending Your App Arsenal With OpenSocial
PDF
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
PPT
The Bluemix Quadruple Threat
PDF
Microsoft lync server 2013 step by step for anyone
PDF
Platform as a Service - Cloud Foundry and IBM Bluemix
PDF
Your Future HTML: The Evolution of Site Design with Web Components
How adding a further tool can be a good thing
A hitchhiker’s guide to troubleshooting ibm connections
Building out a Microservices Architecture with WebSphere Liberty Profile and ...
Java Development on Bluemix
BlackBerry WebWorks
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
RIM Casual Meetup - Bandung #DevIDBdg
August OpenNTF Webinar - Git and GitHub Explained
AD101: IBM Domino Application Development Futures
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
JMP102 Extending Your App Arsenal With OpenSocial
Cordova 3, apps para android
O365con14 - microsoft lync server 2013 online hybrid voice
MS Insights Brazil 2015 containers and devops
JMP103 : Extending Your App Arsenal With OpenSocial
Dart Past Your Competition by Getting Your Digital Experience into Market Fas...
The Bluemix Quadruple Threat
Microsoft lync server 2013 step by step for anyone
Platform as a Service - Cloud Foundry and IBM Bluemix
Your Future HTML: The Evolution of Site Design with Web Components
Ad

Viewers also liked (20)

PPTX
One Firm's Wild Ride to The Cloud
PPTX
IBM Connect 2017 - Beyond Domino Designer
PDF
GraphQL 101
ODP
XPages is Workflow's new best friend
PDF
Connect 2017 DEV-1420 - Blue Mix and Domino – Complementing Smartcloud
PDF
DEV-1185: IBM Notes Performance Boost - Reloaded – IBM Connect 2017
PPTX
Big Data With Graphs
PDF
IBM Connect 2017: Refresh and Extend IBM Domino Applications
PDF
Socialytics: Accelerating IBM Connections Adoption with Watson Analytics
PDF
18+ Ways To Help Clients Love You
PDF
DEV-1550: Why Java 8? Or, What's a Lambda? – IBM Connect 2017
PDF
AD107 Microsoft SharePoint meets IBM Lotus Domino
PPTX
IBM Connections Cloud Administration
PPTX
Email vs. Status Updates as presented at Social Connections VIII Event
PPTX
SpeedGeeking 2015
PPTX
Domino Domain Monitoring, Letting Admins Sleep Later and Stay at Pubs Longer ...
PPTX
Advanced Backups
PPTX
My Dog Ate My Translation Assignment
PDF
Extend IBM Connections to a Social Intranet with Internal Communications, Emp...
PPTX
User Access Manager for IBM Connections (UAM)
One Firm's Wild Ride to The Cloud
IBM Connect 2017 - Beyond Domino Designer
GraphQL 101
XPages is Workflow's new best friend
Connect 2017 DEV-1420 - Blue Mix and Domino – Complementing Smartcloud
DEV-1185: IBM Notes Performance Boost - Reloaded – IBM Connect 2017
Big Data With Graphs
IBM Connect 2017: Refresh and Extend IBM Domino Applications
Socialytics: Accelerating IBM Connections Adoption with Watson Analytics
18+ Ways To Help Clients Love You
DEV-1550: Why Java 8? Or, What's a Lambda? – IBM Connect 2017
AD107 Microsoft SharePoint meets IBM Lotus Domino
IBM Connections Cloud Administration
Email vs. Status Updates as presented at Social Connections VIII Event
SpeedGeeking 2015
Domino Domain Monitoring, Letting Admins Sleep Later and Stay at Pubs Longer ...
Advanced Backups
My Dog Ate My Translation Assignment
Extend IBM Connections to a Social Intranet with Internal Communications, Emp...
User Access Manager for IBM Connections (UAM)
Ad

Similar to DEV-1430 IBM Connections Integration (20)

PPTX
IBM Connect 2016: 1402 - Getting Technically Cozy with IBM Connections Cloud ...
PDF
Philipe Riand - Building Social Applications using the Social Business Toolki...
PPTX
Social Connections 12 - IBM Connections Adminblast
PDF
IBM Connections Adminblast - Soccnx 12 Edition
PDF
IBM Connections Adminblast
ODP
IBM Connect 2014 - KEY108: IBM Collaboration Solutions Application Developmen...
ODP
Connect 2014 - Key108 - Application Development Strategy
PPTX
Turning the IBM Collaboration Ecosystem Pink
PPTX
App dev and partner ecosystem for pink social connections 2017
PDF
IBM Connect AD206 IBM Domino XPages – Embrace, Extend, Integrate
PPTX
01 introduction to darwino
PDF
What's new for Existing Customers in Connections 5.0
PDF
Open Mic Webcast: "Connections Next - what to expect from the next version "
PPTX
12 ibm connections integration
PDF
IBM Collaboration Solutions Application Development - Frequently Asked Questions
ODP
IBM Lotusphere 2013 AD109: Using the IBM® Sametime® Proxy SDK: WebSphere Port...
PPTX
Do Try This at Home! Extend IBM Connections using IBM Worklight
PDF
Webinar: IBM Connections Adminblast
PPTX
Becoming an IBM Connections Developer
PPTX
Webinar: IBM Connections Adminblast
IBM Connect 2016: 1402 - Getting Technically Cozy with IBM Connections Cloud ...
Philipe Riand - Building Social Applications using the Social Business Toolki...
Social Connections 12 - IBM Connections Adminblast
IBM Connections Adminblast - Soccnx 12 Edition
IBM Connections Adminblast
IBM Connect 2014 - KEY108: IBM Collaboration Solutions Application Developmen...
Connect 2014 - Key108 - Application Development Strategy
Turning the IBM Collaboration Ecosystem Pink
App dev and partner ecosystem for pink social connections 2017
IBM Connect AD206 IBM Domino XPages – Embrace, Extend, Integrate
01 introduction to darwino
What's new for Existing Customers in Connections 5.0
Open Mic Webcast: "Connections Next - what to expect from the next version "
12 ibm connections integration
IBM Collaboration Solutions Application Development - Frequently Asked Questions
IBM Lotusphere 2013 AD109: Using the IBM® Sametime® Proxy SDK: WebSphere Port...
Do Try This at Home! Extend IBM Connections using IBM Worklight
Webinar: IBM Connections Adminblast
Becoming an IBM Connections Developer
Webinar: IBM Connections Adminblast

More from Jesse Gallagher (7)

PPTX
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
PPTX
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
PPTX
OpenNTF Webinar May 2021 - Jesse
PPTX
CollabSphere 2020 - NSF ODP Tooling
PPTX
Engage 2019 - De04. Java with Domino After XPages
PPTX
CollabSphere 2018 - Java in Domino After XPages
PPTX
MWLUG 2016 - AD106
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
OpenNTF Webinar May 2021 - Jesse
CollabSphere 2020 - NSF ODP Tooling
Engage 2019 - De04. Java with Domino After XPages
CollabSphere 2018 - Java in Domino After XPages
MWLUG 2016 - AD106

Recently uploaded (20)

PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Electronic commerce courselecture one. Pdf
PPT
Teaching material agriculture food technology
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
KodekX | Application Modernization Development
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Encapsulation_ Review paper, used for researhc scholars
Mobile App Security Testing_ A Comprehensive Guide.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Digital-Transformation-Roadmap-for-Companies.pptx
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
20250228 LYD VKU AI Blended-Learning.pptx
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
The AUB Centre for AI in Media Proposal.docx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Electronic commerce courselecture one. Pdf
Teaching material agriculture food technology
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Network Security Unit 5.pdf for BCA BBA.
KodekX | Application Modernization Development
Review of recent advances in non-invasive hemoglobin estimation
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...

DEV-1430 IBM Connections Integration

  • 1. DEV-1430 IBM Connections Integration Exploring the Long List of Options
  • 2. Disclaimer 2 2/24/17 • Some of the techniques exposed in the session might not be documented by IBM and thus do engage IBM in anyway • Some of these techniques might not work after an upgrade of either IBM Connections cloud or IBM Connections on premises • USE OF THIS INFORMATION IS ENTIRELY AT YOUR OWN RISK. TRILOGGROUP AND DARWINO INC BEAR NO RESPONSIBILITY FOR THE CONSEQUENCES OF RELIANCE ON, OR ANY INACCURACY IN, ANY INFORMATION CONTAINED IN OR SUBMITTED TO THIS SITE. THESE MATERIALS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED.
  • 3. About the Speakers 3 2/24/17 • Jesse Gallagher CTO of I Know Some Guys Board Member of OpenNTF • Philippe Riand CTO of Trilog Group & Darwino Inc. Former application development chief architect for IBM Collaboration Services Chief architect, and inventor, of IBM Domino XPages
  • 4. Who Are We? 4 2/24/17 • TrilogGroup offers a Social Project Management solution called ProjExec IBM partner for 20+ years Fully integrated within the IBM platform Connections cloud and on-premises Often referenced by IBM as an integration example • Darwino is an application development platform targeting mobile, cloud, and IoT Darwino is well-integrated with IBM platforms, including IBM Connections, IBM Domino, IBM Bluemix and IBM Watson darwino.org, a branch of OpenNTF, is the open source organization providing the Connections integration code shown in this session We are in the showcase, booth 630
  • 5. Objectives of the Session 5 2/24/17 • Demonstrate the techniques used by a real application to integrate with IBM Connections, cloud & on-premises • Show the differences between cloud and on-premises platforms and how to adapt to them • Introduce the open-source Darwino libraries abstracting the differences, along with the sample code
  • 6. Open Source project 6 2/24/17 • All the code shown here is *real* and available as an open source project on Darwino.Org • The source code is on Github: https://github.com/darwino-org/Darwino-Connections • It is currently made of 2 projects: A reusable library A demo application showing the capabilities • It is using the darwino-commons library for convenience, which is available as a community edition The library is actually a subset of the full Darwino library
  • 7. Authentication Avoid multiple logins and share the same user identity 7 2/24/17
  • 9. Authenticating on the Cloud 9 2/24/17 • ProjExec uses the IBM Connections Cloud authentication mechanism SAML is not an option because the identity provider has to be Connections Single sign-on is not an option because the servers are running from different domains (no LTPA token) Should not use basic authentication as it forces your server to store the user/password • The solution is to use OAuth: Authentication through Authorization ProjExec triggers the OAuth dance to get an access token for the current user Any call to Connections Cloud services use the same token A call to the people service to get the identity of the current user /manage/oauth/getUserIdentity
  • 10. Pros and Cons of using OAuth 10 2/24/17 • Works similarly on the cloud and on-premises Well, almost – there are inconsistencies in the code that force the application to use 2 code streams (use IBM SBT or Darwino core libs!) connections/opensocial/oauth/rest/people/@me/@self • The user has to grant access to the application the very first time Once done, there is no way for the user to change that! On-premises has a UI to manage OAuth access, but not on the cloud • The dance is always run, but it is often seamless If already authenticated to Connections, the login page does not appear The user does have grant access for every single session
  • 11. Authenticating On-Premises – Single Sign-On 11 2/24/17 • Uses IBM Single Sign-on technology – LTPA Works on top of IBM servers, ideally the same WAS server Runs in the same domain • The authentication is seamless but you need to configure your app to use the Connections login page /profiles/login WAS uses a cookie to redirect to the initial page (WASReqURL) • There is also a Mobile login page when connecting from mobile devices /mobile/admin/Login Create your own login page that redirects to one or the other (by checking the cookie above)
  • 13. Calling Services 13 2/24/17 • The OAuth Token, or the LTPA2 token can be used to call REST services on the behalf of the user • Be careful: some services requires the auth mode to be part of the URL /connections/opensocial/{basic|oauth}/rest/people/{userI d}/{groupId}
  • 14. Integrating into the NavBar Make your application visible in Connections 14 2/24/17
  • 16. Integrating with the Cloud NavBar 16 2/24/17 • The integration should be done by an organization administrator through the Administration page Has to be done on a per organization basis This integration is basic as there is no way to hide/show the option • A partner can work with IBM to get its application available as an “integrated 3 rd party” The process is currently heavyweight This might change in the near future thanks to an application catalog
  • 17. Integrating with the On-Premises NavBar 17 2/24/17 • Done by customizing the IBM Connections JSPs This has to be repeated after a new Connections installation • Documented by IBM in the Customization Guide https://www.ibm.com/support/knowledgecenter/SSYGQH_5.5.0/admin/custo mize/t_admin_common_customize_main.html Add your application to template/menu/apps.jsp In the directory CONNECTIONS_CUSTOMIZATION_PATH There is a ‘debug mode’ so you can do the changes without having to restart the applications • As it is done with JSPs, it is easy to hide/show an application for a user http://blog.riand.com/2014/07/filtering-connections-applications.html
  • 18. Custom Code Demo 18 2/24/17 Darwino --%><tr><%-- --%><th scope="row" class="lotusNowrap"><%-- --%><img style="width:16px;height:16px;" src="data:image/png;base64,iVBORw..." alt="" role="presentation"><%-- --%><a href="/darwino-connections"><%-- --%><strong>Darwino Demo</strong><%-- --%></a><%-- --%></th><%-- --%><td class="lotusNowrap"><%-- --%><a href="https://localhost:8443/darwino-connections"><%-- --%>Darwino Demo Local<%-- --%></a><%-- --%></td><%-- --%></tr><%--
  • 19. Get the Connections Look & Feel Let the user feel that the application is part of IBM Connections 19 2/24/17
  • 21. Integrate the NavBar: Connections Cloud 21 2/24/17 • This is the easiest and documented https://www- 10.lotus.com/ldd/appdevwiki.nsf/xpDocViewer.xsp?lookupName=Toolkit+do cs#action=openDocument&res_title=Adding_the_IBM_SmartCloud_for_Soc ial_Business_banner_to_partner_applications_sbt&content=sdkcontent • Just insert a JavaScript tag to your application <script src="https://<connections_server>/navbar/banner/<appName>/<divElementId>"></script> • The banner recently evolved in June 2016 and then September 2016 Use an extra parameter to get the new version: <script src="...navbar/banner/partner/<divElementId>?PNB=1"></script>
  • 22. Make your Application Look Like Connections 22 2/24/17 • The look and feel consistency is achieved by using the same style sheet Since V1, Connections used OneUI that has been documented until v3.0.3 http://infolib.lotus.com/resources/oneui/3.0/docPublic/index.htm Now, it is called Hikari but the same style names seem to apply But it is not documented anymore What is next is unclear! • On premises, the CSS are loaded with the header as explained before • On the cloud, you have to load the CSS yourself from the Connections server Inspect the CSS loaded by a Connections app and load them explicitly
  • 24. Customizing the UI Widgets, Gadgets, Community Applications 24 2/24/17
  • 26. Comparing the Technologies 26 2/24/17 iWidgets - Defined using an widget-config.xml files - Renders inline HTML in the page - Not secure for cloud deployment - Added from the Connections admin UI or using script OpenSocial Gadgets - Defined using a gadget.xml file - Renders within a controlled iFrame in the page - Designed for pure client, single page apps - Proprietary JavaScript API - Platform-agnostic API, although poorly implemented in Connections - Registered though script commands Community Applications - Defined using a JSON file - Render a simple iFrame pointing to your URL - No APIs available - Communicate the context (community id, user, …) using a simple postMessage(…) to the iFrame - Registered from the Connections admin UI or using REST services For Connections On-Premises For the Embedded Experience (includes the Notes client) For Connections Cloud (maybe Verse?)
  • 27. Optimize your Development 27 2/24/17 • Three technologies for the same purpose: render your app in IBM’s UI! But don’t write the same applications 3 times • The rules Write your “thing” to be embedded in a iFrame Works in the cloud Isolated context from the page/other components (CSS, JavaScript…) Wrap the API calls into a common API, delegating to the underlying technology Use the iFrame directly as an community application (or a gadget) Create a generic iWidget definition inserting an iFrame
  • 28. The Techniques 28 2/24/17 • On the cloud, a static HTML page is gathering the community information Can redirect to another page The parameters can then be sent to the server for processing Ex: community ID • On premises, the widget generates an <iframe> tag that loads the real page Information can be gathered from the main page and sent to the iframe (not implemented in the demo) A resizing mechanism can also be implemented • In both case, the body comes from the same code
  • 30. What Else? Many other capabilities are available 30 2/24/17
  • 31. Other Extensions to Consider 31 2/24/17 • Connections cloud Add organization extensions, per service BSS API, to access to use registration and guest users Display the business card • Connections on-premises Customize the UI besides iWidgets – act on the JSPs Display the business card Participate in JavaScript aggregation Since C5.0, pure client aggregation does not work Create a Jazz OSGi plug-in and contribute your JS SPIs
  • 32. IBM Guest Speaker How this will evolve in a near future 32 2/24/17
  • 33. The Future of Connections Application Development 33 2/24/17 • Maureen Leland Connections App Dev Chief Architect Session to follow: DEV-1048 : The Future Is PINK: IBM Connections Your Way Program : Development, Design and Tools Topic : Enterprise collaboration Session Type : Breakout Session Date/Time : Wed, 22-Feb, 11:00 AM-11:45 AM Location : Moscone West, Level 2 - Room 2007 Presenter(s) : Andre Hagemeier, IBM; Maureen Leland, IBM