This article explains how to configure Single Sign-On (SSO) for Asset Management using a generic Identity Provider (IdP) endpoint with the SAML 2.0 protocol. It includes the Frontline-provided configuration values, the required roles and claims, endpoint setup details for both Asset Management and TIPWeb-IT Mobile, and Google SAML setup steps for districts using Google Workspace.
Configuration Checklist
Frontline Configuration
Frontline sets up the following items to begin the SSO configuration process:
| Num | Item | Value | |
|---|---|---|---|
| 1 | Relying Party Identifier (Assertion Consumer) URL for Desktop | https://HayesURL/TIPIDCore/ | |
| 2 | Relying Party Identifier (Assertion Consumer) URL for Mobile | https://HayesURL/TIPWebITMobile-Login/ | |
| 3 | SAML 2.0 Endpoint for Desktop | https://HayesURL/TIPIDCore/SSO/ADFSLogOn.aspx | |
| 4 | SAML 2.0 Endpoint for Mobile | https://HayesURL/TIPWebITMobile-Logon/SAML/SAMLConsumer | |
| 5 | Your school’s primary email domain | DistrictDomainName |
Overview to Set Up SAML 2.0 SSO
When a district is asked to configure a Single Sign-On endpoint in its IdP using SAML 2.0 for a Frontline application, Frontline provides the application Identifier (Entity ID), the Reply URL (Assertion Consumer Service URL), the Metadata XML, the roles to create in the IdP, and the required attributes and claims for Asset Management.
After the SSO endpoint is configured, the district must send Frontline the IdP SAML Login URL, the IdP SAML Metadata URL or XML, the SAML certificate, and the certificate thumbprint. This process must be completed separately for each Frontline application.
After that, the district must create and provide a test/support account in the IdP, including the username or domain and password, for Frontline to complete testing.
Set Up Roles or Groups
Asset Management requires the following roles or group names to be created in the IdP. These values must be sent as plain text in the role attribute or claim in the SAML response.
| Required Group Name | Description |
|---|---|
| TIPWEBIT_ADMINVIEW_ADMIN | An administrative-level user with full admin permissions |
| TIPWEBIT_ADMINVIEW_USER | An administrative user with similar rights to the admin role, except for some application maintenance features |
| TIPWEBIT_SITEVIEW_ADMIN | A site-level administrator with access only to their site’s data |
| TIPWEBIT_SITEVIEW_USER | A site user who can work only with their site’s data |
| TIPWEBIT_LOOKUPVIEW_USER | A view-only user who can look up tags in TIPWeb IT |
Create an Account for Frontline Asset Management
- Navigation:
- Admin View
- District Settings
- API and SSO Information
Create an SSO account for Frontline support users in your IdP. This account should be used by Frontline Support Staff and must have a password that does not expire.
- Username: tipweb_it
- Password: <password that does not expire>
- Add to group: TIPWEBIT_ADMINVIEW_ADMIN
- Add an email address such as tipweb_it@DistrictDomainName
Set Up Endpoints
Set up a separate endpoint in your IdP so Asset Management can authenticate users.
Application Identifier (Entity ID)
https://HayesURL/TIPIDCore/
Reply URL (Assertion Consumer Service URL)
https://HayesURL/TIPIDCore/SSO/SAMLConsumer.aspx
Metadata XML
<?xml version="1.0"?><md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"entityID=" https://HayesURL/TIPIDCore/"><md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"><md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat><md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location=" https://HayesURL/TIPIDCore/SSO/SAMLConsumer.aspx" index="1" ></md:AssertionConsumerService></md:SPSSODescriptor></md:EntityDescriptor>
List of Attributes and Claims
<md:RequestedAttribute isRequired="true" Name="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="Given Name"/><md:RequestedAttribute isRequired="true" Name="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="Surname"/><md:RequestedAttribute isRequired="true" Name="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="name"/> => UserName<md:RequestedAttribute isRequired="true" Name="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="email"/><md:RequestedAttribute isRequired="false" Name="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="Phone"/><md:RequestedAttribute isRequired="true" Name="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="Role"/>
Metadata Overrides
- NameId Format = emailAddress
- NameId Value = Email
Set up a separate endpoint in your IdP so TIPWeb-IT Mobile can authenticate users.
Application Identifier (Entity ID)
https://HayesURL/TIPWebItMobile-Logon/
Reply URL (Assertion Consumer Service URL)
https://HayesURL/TIPWebItMobile-Logon/SAML/SAMLConsumer
Metadata XML
<?xml version="1.0"?><md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"entityID="https://HayesURL/TIPWebITMobile-Logon/"><md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"><md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat><md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"Location=" https://HayesURL/TIPWebITMobile-Logon/SAML/SAMLConsumer"index="1" ></md:AssertionConsumerService></md:SPSSODescriptor></md:EntityDescriptor>
List of Attributes and Claims
<md:RequestedAttribute isRequired="true" Name="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="Given Name"/><md:RequestedAttribute isRequired="true" Name="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="Surname"/><md:RequestedAttribute isRequired="true" Name="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="name"/> => UserName<md:RequestedAttribute isRequired="true" Name="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="email"/><md:RequestedAttribute isRequired="false" Name="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="Phone"/><md:RequestedAttribute isRequired="true" Name="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" FriendlyName="Role"/>
Metadata Overrides
- NameId Format = emailAddress
- NameId Value = Email
After you configure the SSO endpoint for Asset Management in your IdP, complete the required fields in the Configuration Document and send it to ihdmsupport@frontlineed.com.
Sample SAML Request and Response
Request
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"ID="_591df756-862f-40ff-8b87-2624fbf38c86">Version="2.0"IssueInstant="2021-09-10T15:37:21Z"ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"AssertionConsumerServiceURL="https://HayesURL/TIPIDCore/SSO/SAMLConsumer.aspx"Destination="https://__your_SSO_Login_URL__"><saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">https://HayesURL/TIPIDCore/</saml:Issuer></samlp:AuthnRequest>
Response
The IdP must return a SAML response to Asset Management similar to the following:
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="_93883a0f-fa68-42d7-8444-c61473ea706c" Version="2.0" IssueInstant="2021-09-08T17:49:02.278Z" Destination="https://HayesURL/TIPIDCore/SSO/SAMLConsumer.aspx" InResponseTo="_f9948222-3e11-4592-a0f6-7f15c2812131"><Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://sts.windows.net/90e0c2f4-c0eb-4f28-b0f5-8d2c578af4c8/</Issuer><samlp:Status><samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" /></samlp:Status><Assertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion" ID="_6cf241dc-38c0-4881-9b8b-cd751eda6701" IssueInstant="2021-09-08T17:49:02.278Z" Version="2.0"><Issuer>https://sts.windows.net/90e0c2f4-c0eb-4f28-b0f5-8d2c578af4c8/</Issuer><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /><Reference URI="#_6cf241dc-38c0-4881-9b8b-cd751eda6701"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /><DigestValue>...</DigestValue></Reference></SignedInfo><SignatureValue>...</SignatureValue><KeyInfo><X509Data><X509Certificate>...</X509Certificate></X509Data></KeyInfo></Signature><Subject><NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">tipweb_it@DistrictDomainName</NameID><SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"><SubjectConfirmationData InResponseTo="_f9948222-3e11-4592-a0f6-7f15c2812131" NotOnOrAfter="2021-09-08T18:49:01.997Z" Recipient="https://HayesURL/TIPIDCore/SSO/SAMLConsumer.aspx"/></SubjectConfirmation></Subject><Conditions NotBefore="2021-09-08T17:44:01.997Z" NotOnOrAfter="2021-09-08T18:49:01.997Z"><AudienceRestriction><Audience>https://HayesURL/TIPIDCore/</Audience></AudienceRestriction></Conditions><AttributeStatement><Attribute Name="http://schemas.microsoft.com/identity/claims/displayname"><AttributeValue>Hayes Support</AttributeValue></Attribute><Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"><AttributeValue>Hayes</AttributeValue></Attribute><Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname"><AttributeValue>Support</AttributeValue></Attribute><Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"><AttributeValue>tipweb_it@DistrictDomainName</AttributeValue></Attribute><Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"><AttributeValue>tipweb_it@DistrictDomainName</AttributeValue></Attribute><Attribute Name="role"><AttributeValue>TIPWEBIT_ADMINVIEW_ADMIN</AttributeValue></Attribute></AttributeStatement><AuthnStatement AuthnInstant="2021-09-08T17:39:00.607Z" SessionIndex="_6cf241dc-38c0-4881-9b8b-cd751eda6701"><AuthnContext><AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef></AuthnContext></AuthnStatement></Assertion></samlp:Response>
Setting Up Google SAML
To integrate Google SAML SSO with Frontline Asset Management, your district must have a valid Google for Education or Google Workspace license. If you do not have a Google Workspace or Google Admin account, see Google Workspace Services.
Additional Resources
Use these Google resources for additional support:
Complete the following steps so Frontline can configure Asset Management to use SSO with your Google instance:
- Create Google custom user attributes (roles) for Asset Management and Mobile SSO.
- Create a Google account for Frontline support users.
- Add an Identifier Entity ID and ACS URL for each product: Asset Management and Mobile.
- Map the SAML attributes, including custom user attributes.
- Populate all users’ custom attributes (roles).
- Send the account credentials, security certificates, and login details to the Frontline team.
- Repeat steps 1–6 for Mobile.
Steps
Log in to your Google Admin console. You must be a Google Workspace administrator. Click Users, then select More > Manage Custom Attributes.
Click Add Custom Attributes.
Create a new custom attribute for Asset Management groups. It must be:
- Type: Text
- Visibility: Visible to organization
- Value type: Single Value
Click Save.
Click Apps.
Click Web and mobile apps.
Click and select Add App > Add custom SAML app.
Enter a name for the app and optionally upload an icon.
Download and copy the metadata, SSO URL, entity ID, certificate, and fingerprint, then record them in the Configuration Document. Repeat this process for Mobile. Send both completed documents to Frontline support.
Enter or paste the ACS URL and Entity ID from this document. The Entity ID is the Application Identifier. The ACS URL is the Endpoint Reply URL or Assertion Consumer Service URL. The response must not be signed. Set the Name ID format to Email and the Name ID value to Primary email.
| TIPWeb-IT | Mobile | |
|---|---|---|
| Entity ID | https://HayesURL/TIPIDCore/ | https://HayesURL/TIPWebITMobile-Logon/ |
| Endpoint Reply URL | https://HayesURL/TIPIDCore/SSO/SAMLConsumer.aspx | https://HayesURL/TIPWebITMobile-Logon/SAML/SAMLConsumer |
Add the SAML attribute mapping. Be sure to include the custom role attribute that carries each user’s role name.
FAQs
Should I name the URLs, file names, projects, and Google settings exactly as documented here?
Yes. Do not change these values. Asset Management depends on the exact names and URLs shown in this document.