SSO Tokens implementation
These are instructions on how to generate Single Sign-On tokens on your server. These token can be used to authenticate your users with
bookafy.
Here’s how it works:
To find your private key, login to partner dashboard as a White label Admin and
Store your private key on your server and don’t share it.
When a user wants to use the bookafy, send a request to your server to generate an SSO token.
On your server, generate a token using the snippet below.
Pass the token back to your app
We’ll use that token to authenticate your user.
1. Install a JWT library:
We use JSON Web Tokens to securely authenticate your users. First, install the appropriate JWT library for your server.
sudo gem install jwt
2. Generate tokens on your server:
Following sample code is in ruby.
require ‘jwt’
PrivateKey = ‘UNIQUE PRIVATE KEY’
3. SSO Signup:
You’ll create on your side for signup.
def createBookafyToken(user)
userData = {
iss: “abcd” , # or abcd
exp: Time.now.to_i + 900, # Time.now(in seconds) + 15 min(in seconds)
iat: Time.now.to_i, # Time.now(in seconds)
business_name: user.business_name,
email: user.email,
name: user.name,
time_zone: time_zone # default Pacific Time (US & Canada)
}
sso_token = JWT.encode(userData, PrivateKey, ‘HS276’)
end
After generating the token, You hit on http://app.examplescheduler.com/sso/signup?token=#{sso_token}
You’ll get in response.
Success Response:
Code: 201
User will be created.
Failure Response:
Send an error in response.
Error Response sample (in json):
{“status”:”forbidden”,”error”:”Validation failed: User email has already been taken”}
Once user created successfully, you’ll generate other token for login.
4. SSO login:
You’ll create on your side for sign in.
def createBookafyToken(user)
userData = {
email: user.email,
iss: “abcd”, # or abcd
logout_redirect_url: ‘https://xyz.com’,
exp: Time.now.to_i + 900,# Time.now(in seconds) + 15 min(in seconds)
iat: Time.now.to_i # Time.now(in seconds)
}
sso_token = JWT.encode(userData, PrivateKey, ‘HS276’)
end
http://app.exampleschedule.com/sso/login?token=#{sso_token}
You’ll get in response.
Success Case:
Code: 200
Redirected to home page if calendar connected otherwise redirected to calendar page.
Failure Response:
Send error message in response
Validation: If user not exist or you are trying with different iss
Code: 404
Error Response sample (in json)
{“status”:”forbidden”,”error”:”Validation failed: User email has already been taken”}
Note:
On logout, When User logout from the account and it will be redirected to logout_redirect_url
5. Time Zone list:
“American Samoa”, “America/Asuncion”, “Midway Island”, “Hawaii”, “Alaska”, “Pacific Time (US & Canada)”, “Tijuana”, “Arizona”, “Chihuahua”,
“Mazatlan”, “Mountain Time (US & Canada)”, “Central America”, “Central Time (US & Canada)”, “Guadalajara”, “Mexico City”, “Monterrey”,
“Saskatchewan”, “Bogota”, “Eastern Time (US & Canada)”, “Indiana East”, “Lima”, “Quito”, “Atlantic Time (Canada)”, “Caracas”, “Georgetown”,
“La Paz”, “Santiago”, “Newfoundland”, “Brasilia”, “Buenos Aires”, “Greenland”, “Montevideo”, “Mid-Atlantic”, “Azores”, “Cape Verde Is.”,
“Casablanca”, “Dublin”, “Edinburgh”, “Lisbon”, “London”, “Monrovia”, “UTC”, “Amsterdam”, “Belgrade”, “Berlin”, “Bern”, “Bratislava”, “Brussels”,
“Budapest”, “Copenhagen”, “Ljubljana”, “Madrid”, “Paris”, “Prague”, “Rome”, “Sarajevo”, “Skopje”, “Stockholm”, “Vienna”, “Warsaw”, “West
Central Africa”, “Zagreb”, “Athens”, “Bucharest”, “Cairo”, “Harare”, “Helsinki”, “Jerusalem”, “Kyiv”, “Pretoria”, “Riga”, “Sofia”, “Tallinn”, “Vilnius”,
“Baghdad”, “Istanbul”, “Kuwait”, “Minsk”, “Moscow”, “Nairobi”, “Riyadh”, “St. Petersburg”, “Volgograd”, “Tehran”, “Abu Dhabi”, “Baku”, “Muscat”,
“Tbilisi”, “Yerevan”, “Kabul”, “Ekaterinburg”, “Islamabad”, “Karachi”, “Tashkent”, “Chennai”, “Kolkata”, “Mumbai”, “New Delhi”, “Sri
Jayawardenepura”, “Kathmandu”, “Almaty”, “Astana”, “Dhaka”, “Urumqi”, “Rangoon”, “Bangkok”, “Hanoi”, “Jakarta”, “Krasnoyarsk”,
“Novosibirsk”, “Beijing”, “Chongqing”, “Hong Kong”, “Irkutsk”, “Kuala Lumpur”, “Perth”, “Singapore”, “Taipei”, “Ulaanbaatar”, “Osaka”, “Sapporo”,
“Seoul”, “Tokyo”, “Yakutsk”, “Adelaide”, “Darwin”, “Brisbane”, “Canberra”, “Guam”, “Hobart”, “Melbourne”, “Port Moresby”, “Sydney”,
“Vladivostok”, “Magadan”, “New Caledonia”, “Solomon Is.”, “Auckland”, “Fiji”, “Kamchatka”, “Marshall Is.”, “Wellington”, “Chatham Is.”,
“Nuku’alofa”, “Samoa”, “Tokelau Is.”