AgileApps Support Wiki Pre Release

Difference between revisions of "Pass Through Authentication"

From AgileApps Support Wiki
imported>Aeric
imported>Aeric
 
(39 intermediate revisions by the same user not shown)
Line 1: Line 1:
Pass Through Authentication (PTA) lets a user go straight to the platform from an organization's web page or application, without having to log in again.
Pass Through Authentication (PTA) lets a user go straight to the platform from an organization's web page or application, without having to log in again.


===How it Works===
===Working with pass through authentication===


While using an enterprise application, a user would like to visit a page hosted on the platform, without having to log in to the platform to see it (after having already logged in to the enterprise app). To accomplish that goal, the application sends a small SOAP message to the platform, in an HTTP request. That message contains the information needed to log into the platform. Data in it is passed to an authentication server, which sends back a message saying that authentication has succeeded or failed, after which the user is directed to the appropriate page, as shown in the following diagram:
After logging on to an enterprise application, you might want to visit a page hosted on the platform without logging on to that platform. A single log on to the enterprise application gives you access to all the pages hosted on the platform. The application sends a SOAP message to the platform in an HTTP request. That SOAP message contains the information needed to log on to the platform. The data in it is passed to an authentication server which sends back a message saying whether the authentication has succeeded or failed. The user is directed to the appropriate page, as displayed in the following diagram:
:[[File:SSO-PTA.png]]
:[[File:SSO-PTA.png]]


Line 10: Line 10:
!
!
!User
!User
!Your Organization's Web App
!Your organization's web application
!Platform
!Platform
!Authentication Server
!Authentication server
|-
|-
| 1. || Logs in to a web page or application provided by your organization || || ||
| 1. || Log on to a web page or application provided of your organization || || ||
|-
|-
| 2. || Clicks a link that goes to a platform page || || ||
| 2. || Click a link that directs to a platform page || || ||
|-
|-
| 3. || || Passes data to the platform's PTA service in the SOAP payload  
| 3. || || Pass data to the platform's PTA service in the SOAP payload  
* Session ID (optional, but desirable)
* Session ID (optional, but desirable)
* Login ID
* Login ID
Line 26: Line 26:
|
|
|
|
* Receives data in the SOAP payload:
* Receive data in the SOAP payload:
* Passes data to the Authentication server
* Pass data to the Authentication server
|
|
|-
|-
| 5. || ||  || ||
| 5. || ||  || ||
* Authenticates the user
* Authenticate the user
* Sends back a success- or failure-report
* Send back a success-report or failure-report
|-
|-
| 6. || || || Redirects the user to the appropriate page. ||
| 6. || || || Redirect the user to the appropriate page. ||
|}
|}


Line 40: Line 40:
The URL of the Authentication Server and the URLs of the pages to visit in the event of success or failure are configured in the platform's [[Single Sign-On]] Settings:  
The URL of the Authentication Server and the URLs of the pages to visit in the event of success or failure are configured in the platform's [[Single Sign-On]] Settings:  


#Go to '''[[File:GearIcon.png]] > Administration > Company Setup > Single Sign-On'''
#Click '''[[File:GearIcon.png]] > Administration > Account Management > Single Sign-On Settings'''.
#Click the '''[Edit]''' button
#Click the '''[Edit]''' button.
#For ''Single Sign-On Settings'', choose '''Pass Through Authentication'''
#Choose '''Pass Through Authentication''' from the ''Single Sign-On Using'' drop-down list. Selecting Pass Through Authentication automatically displays the '''Platform Authentication Service URL''' field below the drop-down list.
#Fill in the Pass Through Authentication Settings:
#Specify the location of the authentication service in the '''Third party Authentication Service URL''' field. The platform uses this URL to authenticate the USER and pass the appropriate pay load in the HTTP request.
#:;Third party Authentication Service URL: Location of the authentication service. The platform uses this URL to authenticate the USER, passing the appropriate pay load in the HTTP request.
#Enter the URL of the page where you want to go when the authentication succeeds in the “Success page URL” field.
#:;Success page URL: The page the platform sends the user to when authentication succeeds:
#: If the URL is not specified then the platform will take you to the home page.
#:::* If not specified, the default destination is the platform's home page.
#Enter the URL of the page where you want to go when the authentication fails in the “Error page URL” field.
<!--:::* Can be overridden dynamically in the HTTP request sent by the web page or application. -->
#: If the URL is not specified then the platform will take you to the login page.
#:;Error page URL: The page the platform sends the user to when authentication fails:
#: This field can be overridden dynamically by the Authentication Server
#:::* If not specified, the default destination is the platform’s Login-error page.
#:::* Can be overridden dynamically by the Authentication Server
<!--:::* Can be overridden dynamically in the HTTP request sent by the web page or application. -->
#Click '''[Save]'''
#Click '''[Save]'''


Line 57: Line 54:


==== Posting a Form to the Platform ====
==== Posting a Form to the Platform ====
The application or web page can use a form like the one shown below to do an HTTP ''POST'' to the platform. The user is then seamlessly redirected to the success or failure page, depending on the results of the authentication.
The following is an example of a form which the application or web page uses to make an HTTP ''POST'' to the platform. The user is then seamlessly redirected to the success or failure page depending on the authentication.


:<syntaxhighlight lang="xml" enclose="div">
:<syntaxhighlight lang="xml" enclose="div">
<form id='testForm'  
<form id='testForm'  
  action='https://{domain}/networking/passThroughAuth'  
  action='https://{{domain}}/networking/passThroughAuth'  
  METHOD="POST" enctype="application/x-www-form-urlencoded"
  METHOD="POST" enctype="application/x-www-form-urlencoded"
>
>
  <input type="hidden" name="loginID" value="jondoe@test.com">
  <input type="hidden" name="loginID" value="jondoe@test.com">
  <input type="hidden" name="sessionID" value="adasd3qw4q4weasdasd">
  <input type="hidden" name="sessionID" value="adasd3qw4q4weasdasd">
</form>
</form>
</syntaxhighlight>
</syntaxhighlight>


where:
Where,
:;loginID: The user's login name on the platform--typically in the form of an emails address.
:;loginID: The user's login name on the platform, typically in the form of an email address.
:;sessionID:The session ID of the user on the organization's website. Optional. It is passed on to the authentication service, so the authentication service can make use of it.
:;sessionID:The session ID of the user on the organization's website. This field is optional. It is passed on to the authentication service, so the authentication service can make use of it.
 
When the platform receives POSTed form data, it passes the data to the Authentication Service using content type <tt>application/x-www-form-urlencoded</tt>, in a request. See the example below:
:;Method:POST
:;URI:Configured in the [[Single Sign-On]] Settings
:;Content-Type:<tt>application/x-www-form-urlencoded</tt>
:;Payload:A [[URL Encoding|URL Encoded]] version of a data string that looks like this:
::<syntaxhighlight lang="text" enclose="div">
loginID=jondoe@test.com&sessionID=adasd3qw4q4weasdasd
</syntaxhighlight>
 
: The Authentication Service reads the identification parameters from the request as it is in this Java code, for example:
::<syntaxhighlight lang="java" enclose="div">
String loginId  = (String)request.getParameter("loginID");
String sessionId = (String)request.getParameter("sessionID");
</syntaxhighlight>
 
Where '''request''' is the object containing the HTTP request (for example, in an <tt>HttpServlet</tt> instance).


==== Sending a SOAP Request to the Platform ====
==== Sending a SOAP Request to the Platform ====
This message format needs to be delivered to the platform by the Application or web page.
This message format can be delivered to the platform by an application or web page.


;Method:POST  
;Method:POST  
Line 81: Line 95:
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
    <soapenv:Body>
<LJAuthenticate xmlns="urn:authentication.soap.ws.longjump.com">
        <LJAuthenticate xmlns="urn:authentication.soap.ws.longjump.com">
<sessionID>...</sessionID>
            <sessionID>...</sessionID>
<loginID>...</loginID>
            <loginID>...</loginID>
</LJAuthenticate>
        </LJAuthenticate>
</soapenv:Body>
    </soapenv:Body>
</soapenv:Envelope>
</soapenv:Envelope>
</syntaxhighlight>
</syntaxhighlight>


where:
Where:
:;sessionID:The session ID of the user on the organization's website. Optional. It is passed on to the authentication service, so the authentication service can make use of it.
:;sessionID:The session ID of the user on the organization's website. Optional. It is passed on to the authentication service, so the authentication service can make use of it.
:;loginID: The user's login name on the platform--typically in the form of an emails address.
:;loginID: The user's login name on the platform--typically in the form of an email address.
 
==== Messages Sent from the Platform to the Authentication Server ====
These message formats need to be processed and/or delivered by the Authentication Server.


;Message sent from the platform to the Authentication Server:
When the platform receives a SOAP request, it sends a message in the following format to the Authentication Server:
: The platform passes on the request the Authentication Service.
: The Authentication Service reads the form parameters (content type <tt>application/x-www-form-urlencoded</tt>)from the request and authenticates the user.
:;Method:POST
:;URI:Configured in the [[Single Sign-On]] Settings
::<syntaxhighlight lang="xml" enclose="div">
<form id='testForm'
action='{authentication service URI}'
METHOD="POST" enctype="application/x-www-form-urlencoded"
>
    <input type="hidden" name="loginID" value="jondoe@test.com">
    <input type="hidden" name="sessionID" value="adasd3qw4q4weasdasd">
</form>
</syntaxhighlight>
 
;Message sent from the platform to the Authentication Server:
:The Authentication Service reads this request and authenticates the user.
:;Method:POST  
:;Method:POST  
:;URI:Configured in the [[Single Sign-On]] Settings  
:;URI:Configured in the [[Single Sign-On]] Settings  
Line 119: Line 114:
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
    <soapenv:Body>
<LJAuthenticate xmlns="urn:authentication.soap.ws.longjump.com">
        <LJAuthenticate xmlns="urn:authentication.soap.ws.longjump.com">
<sessionID>...</sessionID>
            <sessionID>...</sessionID>
<originatingDomain>...</originatingDomain>
            <originatingDomain>...</originatingDomain>
<originatingIp>...</originatingIp>
            <originatingIp>...</originatingIp>
<loginID>...</loginID>
            <loginID>...</loginID>
</LJAuthenticate>
        </LJAuthenticate>
</soapenv:Body>
    </soapenv:Body>
</soapenv:Envelope>
</soapenv:Envelope>
</syntaxhighlight>
</syntaxhighlight>
:where:
:Where:
::;originatingDomain:Name of the Domain the request originally came from (e.g. <tt>wwww.paaspartout.com</tt>)
::;originatingDomain:Name of the Domain the request originally came from (e.g. <tt>wwww.paaspartout.com</tt>)
::;originatingIp:IP Address of the domain the request originally came from (e.g. <tt>10.20.30.40</tt>)
::;originatingIp:IP Address of the domain the request originally came from (e.g. <tt>10.20.30.40</tt>)
Line 135: Line 130:
::;loginID:Passed on from the original request
::;loginID:Passed on from the original request


==== Messages Sent from the Authentication Server to the Platform ====
==== Messages Returned by the Authentication Server ====
After authenticating the user, the server sends back a success or failure response.


;Authentication-Succeeded response:
;Authentication-Succeeded response:
Line 141: Line 137:
::<syntaxhighlight lang="xml" enclose="div">
::<syntaxhighlight lang="xml" enclose="div">
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope   xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
    <soapenv:Body>
<LJAuthenticateResponse xmlns="urn:authentication.soap.ws.longjump.com">
        <LJAuthenticateResponse xmlns="urn:authentication.soap.ws.longjump.com">
<status>AUTHENTICATED</status>
            <status>AUTHENTICATED</status>
<loginID>userLogin@Login.com</loginID>
            <loginID>userLogin@Login.com</loginID>
</LJAuthenticateResponse>
        </LJAuthenticateResponse>
</soapenv:Body>
    </soapenv:Body>
</soapenv:Envelope>
</soapenv:Envelope>
</syntaxhighlight>
</syntaxhighlight>
Line 156: Line 152:
::<syntaxhighlight lang="xml" enclose="div">
::<syntaxhighlight lang="xml" enclose="div">
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope   xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
    <soapenv:Body>
<LJAuthenticateResponse xmlns="urn:authentication.soap.ws.longjump.com">
        <LJAuthenticateResponse xmlns="urn:authentication.soap.ws.longjump.com">
<status>NOT_AUTHETICATED</status>
            <status>NOT_AUTHETICATED</status>
<loginID>userLogin@Login.com</loginID>
            <loginID>userLogin@Login.com</loginID>
                        <redirectOnErrorURL>http://www.location.com/somePage</redirectOnErrorURL>
            <redirectOnErrorURL>http://www.location.com/somePage</redirectOnErrorURL>
</LJAuthenticateResponse>
        </LJAuthenticateResponse>
</soapenv:Body>
    </soapenv:Body>
</soapenv:Envelope>
</soapenv:Envelope>
</syntaxhighlight>
</syntaxhighlight>
:where:
:Where:
::;redirectOnErrorURL:URL of the next page the user sees. (Overrides the [[Single Sign-On]] settings.)
::;redirectOnErrorURL:URL of the next page the user sees. (Overrides the [[Single Sign-On]] settings.)

Latest revision as of 09:23, 9 March 2017

Pass Through Authentication (PTA) lets a user go straight to the platform from an organization's web page or application, without having to log in again.

Working with pass through authentication

After logging on to an enterprise application, you might want to visit a page hosted on the platform without logging on to that platform. A single log on to the enterprise application gives you access to all the pages hosted on the platform. The application sends a SOAP message to the platform in an HTTP request. That SOAP message contains the information needed to log on to the platform. The data in it is passed to an authentication server which sends back a message saying whether the authentication has succeeded or failed. The user is directed to the appropriate page, as displayed in the following diagram:

SSO-PTA.png

Here is an explanation of the steps:

User Your organization's web application Platform Authentication server
1. Log on to a web page or application provided of your organization
2. Click a link that directs to a platform page
3. Pass data to the platform's PTA service in the SOAP payload
  • Session ID (optional, but desirable)
  • Login ID
4.
  • Receive data in the SOAP payload:
  • Pass data to the Authentication server
5.
  • Authenticate the user
  • Send back a success-report or failure-report
6. Redirect the user to the appropriate page.

Enabling Pass Through Authentication

The URL of the Authentication Server and the URLs of the pages to visit in the event of success or failure are configured in the platform's Single Sign-On Settings:

  1. Click GearIcon.png > Administration > Account Management > Single Sign-On Settings.
  2. Click the [Edit] button.
  3. Choose Pass Through Authentication from the Single Sign-On Using drop-down list. Selecting Pass Through Authentication automatically displays the Platform Authentication Service URL field below the drop-down list.
  4. Specify the location of the authentication service in the Third party Authentication Service URL field. The platform uses this URL to authenticate the USER and pass the appropriate pay load in the HTTP request.
  5. Enter the URL of the page where you want to go when the authentication succeeds in the “Success page URL” field.
    If the URL is not specified then the platform will take you to the home page.
  6. Enter the URL of the page where you want to go when the authentication fails in the “Error page URL” field.
    If the URL is not specified then the platform will take you to the login page.
    This field can be overridden dynamically by the Authentication Server
  7. Click [Save]

Message Formats

Posting a Form to the Platform

The following is an example of a form which the application or web page uses to make an HTTP POST to the platform. The user is then seamlessly redirected to the success or failure page depending on the authentication.

<syntaxhighlight lang="xml" enclose="div">

<form id='testForm'

  action='https://{yourDomain}/networking/passThroughAuth' 
  METHOD="POST" enctype="application/x-www-form-urlencoded"

>

  <input type="hidden" name="loginID" value="jondoe@test.com">
  <input type="hidden" name="sessionID" value="adasd3qw4q4weasdasd">

</form> </syntaxhighlight>

Where,

loginID
The user's login name on the platform, typically in the form of an email address.
sessionID
The session ID of the user on the organization's website. This field is optional. It is passed on to the authentication service, so the authentication service can make use of it.

When the platform receives POSTed form data, it passes the data to the Authentication Service using content type application/x-www-form-urlencoded, in a request. See the example below:

Method
POST
URI
Configured in the Single Sign-On Settings
Content-Type
application/x-www-form-urlencoded
Payload
A URL Encoded version of a data string that looks like this:
<syntaxhighlight lang="text" enclose="div">

loginID=jondoe@test.com&sessionID=adasd3qw4q4weasdasd </syntaxhighlight>

The Authentication Service reads the identification parameters from the request as it is in this Java code, for example:
<syntaxhighlight lang="java" enclose="div">

String loginId = (String)request.getParameter("loginID"); String sessionId = (String)request.getParameter("sessionID"); </syntaxhighlight>

Where request is the object containing the HTTP request (for example, in an HttpServlet instance).

Sending a SOAP Request to the Platform

This message format can be delivered to the platform by an application or web page.

Method
POST
URI
https://{yourDomain}/networking/passThroughAuth
<syntaxhighlight lang="xml" enclose="div">

<?xml version="1.0" encoding="UTF-8" ?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

   <soapenv:Body>
       <LJAuthenticate xmlns="urn:authentication.soap.ws.longjump.com">
           <sessionID>...</sessionID>
           <loginID>...</loginID>
       </LJAuthenticate>
   </soapenv:Body>

</soapenv:Envelope> </syntaxhighlight>

Where:

sessionID
The session ID of the user on the organization's website. Optional. It is passed on to the authentication service, so the authentication service can make use of it.
loginID
The user's login name on the platform--typically in the form of an email address.

When the platform receives a SOAP request, it sends a message in the following format to the Authentication Server:

Method
POST
URI
Configured in the Single Sign-On Settings
<syntaxhighlight lang="xml" enclose="div">

<?xml version="1.0" encoding="UTF-8" ?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

   <soapenv:Body>
       <LJAuthenticate xmlns="urn:authentication.soap.ws.longjump.com">
           <sessionID>...</sessionID>
           <originatingDomain>...</originatingDomain>
           <originatingIp>...</originatingIp>
           <loginID>...</loginID>
       </LJAuthenticate>
   </soapenv:Body>

</soapenv:Envelope> </syntaxhighlight>

Where:
originatingDomain
Name of the Domain the request originally came from (e.g. wwww.paaspartout.com)
originatingIp
IP Address of the domain the request originally came from (e.g. 10.20.30.40)
sessionID
Passed on from the original request
loginID
Passed on from the original request

Messages Returned by the Authentication Server

After authenticating the user, the server sends back a success or failure response.

Authentication-Succeeded response
This response is sent when authentication succeeds.
<syntaxhighlight lang="xml" enclose="div">

<?xml version="1.0" encoding="UTF-8" ?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

   <soapenv:Body>
       <LJAuthenticateResponse xmlns="urn:authentication.soap.ws.longjump.com">
           <status>AUTHENTICATED</status>
           <loginID>userLogin@Login.com</loginID>
       </LJAuthenticateResponse>
   </soapenv:Body>

</soapenv:Envelope> </syntaxhighlight>

Authentication-Failed response
This response is sent when authentication fails.
<syntaxhighlight lang="xml" enclose="div">

<?xml version="1.0" encoding="UTF-8" ?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

   <soapenv:Body>
       <LJAuthenticateResponse xmlns="urn:authentication.soap.ws.longjump.com">
           <status>NOT_AUTHETICATED</status>
           <loginID>userLogin@Login.com</loginID>
           <redirectOnErrorURL>http://www.location.com/somePage</redirectOnErrorURL>
       </LJAuthenticateResponse>
   </soapenv:Body>

</soapenv:Envelope> </syntaxhighlight>

Where:
redirectOnErrorURL
URL of the next page the user sees. (Overrides the Single Sign-On settings.)