Creating an app | Installing an app |
---|---|
|
Note: The purpose of this exercise is to help you understand what the customer journey would look like.
|
TAS supports two types of API - core and tenant. Mostly, writing an app involves using tenant APIs, with core APIs handled by the tazzy network proxy working on your app's behalf.
Tenant APIs are the familiar, business-oriented APIs seen in HR platforms. For example, a career site app might call GET /jobs to get a list of open jobs (maybe from the Applicant Tracking System). Tenant APIs have some additional concepts:
Core APIs are housekeeping APIs that make tenant APIs possible. For example the TAS core will make a core API call into your app whenever a tenant installs it.
Important: Your app must always check that the incoming tazzy-secret request header on all incoming traffic matches your app's secret key. A failed match may indicate someone is trying to hack your app.
Producing APIs | Consuming APIs | |
---|---|---|
Prefix | Back end server (tazzy tab on your app) e.g. https://yourapp.com:8080 |
https://<yourapp>tazzy.io |
Authentication | Check that the incoming tazzy-secret request header matches your app's secret key | Attach tazzy-secret request header with your app's secret key |
Core APIs You don't need to declare the core APIs your app produces and consumes |
/tas/core<api> e.g. POST /tenants --> https://yourapp.com:8080/tas/core/tenants |
/core<api> e.g. GET /tenants/{tenant} --> https://yourapp.tazzy.io/core/tenants/{tenant} |
Tenant APIs (SoT == true) Remember to declare all tenant APIs your app produces and consumes |
/t/{tenant}/devs/{developer}<api> e.g. GET /jobs --> https://yourapp.com:8080/t/acme/devs/tas/jobs |
/t/{tenant}/devs/{developer}<api> e.g. GET /jobs --> https://yourapp.tazzy.io/t/acme/devs/tas/jobs
|
Tenant APIs (SoT == false) |
/t/{tenant}/devs/{developer}<api> e.g. GET /appStatus --> https://yourapp.com:8080/t/acme/devs/tas/appStatus |
/t/{tenant}/apps/{app}/devs/{developer}<api> e.g. GET /appStatus --> https://yourapp.tazzy.io/t/acme/apps/someapp/devs/tas/appStatus |
Tenant APIs (on behalf) |
As above, but your app also receives the tazzy-saml request header. |
As above, and:
|
To protect web resources (e.g. pages) in your app with the customer's SSO (i.e. so that only authorized users or candidates can see them):
Add sign out support:
Choose a suitable protection level for each page in your app.
Visible to | tazzy-saml request header | Example | |
---|---|---|---|
Secured | Signed in visitors only | Always present | url: /t/acme/index.html |
Whitelisted | Anyone | Present if the user has recently visited a secured page. Useful for e.g. career site pages that are visible to anyone, but show extra information to signed in candidates. | url: /t/acme/index.html whitelist: /index.html |
Anonymous | Anyone | Not present. | url: /index.html url: /static/code.js url: /tenants/acme/index.html |
Enter your whitelisting rules against your app in the developer site, using the following rules:
Examples:
When inside an SSO-protected web page, the tazzy-saml header is present (see above).
When producing an on-behalf API:
GET /core/tenants/assertions/byKey/tazzy-saml/json
Response:
{
"nameID": "frank@ibm.com",
"entityID": "some other SAML info",
"tas.personal.givenName": "Fred",
"tas.personal.familyName": "Bloggs",
"tas.personal.email": "fredbloggs@gmail.com",
"tas.roles": [
"internal"
]
}