EducationalTestingService/halef-authen

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

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Description

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.

Web Service Interface

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.

Input Notes

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.

Input (body of POST request):
{
  "service_key": "company XYZ",
  "service_secret": "shh!",
  "timezone": "UTC+09",
  "userIpAddress": "10.12.1.10",
    "demoGraphics": [
        {
            "name": "AWSregion",
            "value": "singapore"
        }
    ]
}
Output (body of POST response):

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”.

The company XYZ would use the following sip URI (sip:user:password@host:port;) to call halef:

sip:bob:mypassword@blah.ets.org:5060

This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.