Name: halef-authen
Owner: ETS
Description: This is for allowing users to get credentials for accessing Halef and for communicating if Halef currently has capacity available for that user.
Created: 2017-05-04 18:33:00.0
Updated: 2017-05-16 22:31:44.0
Pushed: 2017-06-03 19:09:59.0
Homepage: null
Size: 70
Language: Python
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
This Halef Authentication web service, is for allowing users to get credentials for accessing Halef and for communicating if Halef currently has capacity available for use. Also the service captures user details.
This is a REST based web service that consumes “application/json” and produces “application/json”.
The server will be serviced over TLS >= 1.2. We will not worry about signing data for now, instead we will just use a secret that is passed in each packet. A secret will be shared with beforehand. Note this web service might be updated in the future to use digest based authentication, Oauth2, or other more secure authentication methods.
The userIpAddress might allow us to route the user to the closest region based on ping or such. But we are aware that the user's IP could change during the use of Halef.
The userId should be an id that can be correlated to the company XYZ's client id, but should not be an actual person's name. It can be the same as the company XYZ's client id or an id that has a one to one mapping to the company XYZ's client id.
We may use the following for predicting traffic patterns in the future: userIpAddress, userId, timezone, and AWSregion value.
The timezone is that of the client if available. The format being UTC[-+][0-1][0-9].
The demoGraphics is list of arbitrary key/value pairs which will agree on before hand. AWSregion is the region of company XYZ's server. Other info is related to the demographics of the client that may affect the user's language usage.
{
"service_key": "company XYZ",
"service_secret": "shh!",
"timezone": "UTC+09",
"userIpAddress": "10.12.1.10",
"demoGraphics": [
{
"name": "AWSregion",
"value": "singapore"
}
]
}
The information to allow the company XYZ's to make a SIP connection to Halef is output. Also the Halef will note if it likely has capacity available. I say likely, because capacity can flux in real time.
The status can be: “available”, “busy”, “unavailable”.
“available” means the system can accept a call
“busy” means the system will likely accept a call in 2 to 3 minutes from now
“unavailable” means the system will not accept calls currently
{ “user”: “Bob1”, “status”: “busy”, “hostName”: “somewhere.com”, “password”: “blah231@!“, “port”: 8099 }
The company XYZ would use the following sip URI (sip:user:password@host:port;) to call halef:
sip:bob:mypassword@blah.ets.org:5060