...
API
...
for
...
Authentication
...
and
...
Authorization
API for Authentication
Create User
Code Block |
---|
POST https://ssl.latest.deflaux-test.appspot.com/auth/v1/user
{"userId":"demouser", "password":"demouser-pw", "email":"demouser@sagebase.org", "firstName":"demo", "lastName":"user", "displayName":"Demo User"}
{code}
Successful |
Successful Response:
...
Code Block |
---|
HTTP/1.1 201 Created
{code}
h3. Update User
{code} |
Update User
Code Block |
---|
PUT https://ssl.latest.deflaux-test.appspot.com/auth/v1/user
{"userId":"demouser", "password":"demouser-pw", "email":"demouser@sagebase.org", "firstName":"demo", "lastName":"user", "displayName":"Demo User"}
{code}
Successful |
Successful Response:
...
Code Block |
---|
HTTP/1.1 200 OK
{code}
h3. Send |
Send Change-Password
...
...
Code Block |
---|
POST https://ssl.latest.deflaux-test.appspot.com/auth/v1/userPasswordEmail
{"userId":"demouser"}
{code}
Successful |
Successful Response:
...
Code Block |
---|
HTTP/1.1 204 NO CONTENT
{code}
h3. Initiate Session |
Initiate Session (Login)
...
Request:
...
Code Block |
---|
POST https://ssl.latest.deflaux-test.appspot.com/auth/v1/session
{"userId":"demouser", "password":"demouser-pw"}
{code}
Successful |
Successful Response:
...
Code Block |
---|
HTTP/1.1 201 Created
Content-Type: application/json
{"displayName":"Demo User","sessionToken":"AYcOhWIm9NdOC6BdzzzisQ00"}
{code}
|
Error
...
Response,
...
if
...
the
...
user
...
authentication
...
details
...
are
...
incorrect:
...
Code Block |
---|
HTTP/1.1 400 Bad Request
AuthenticationURL: https://ssl.latest.deflaux-test.appspot.com/auth/v1/session
Content-Type: application/json
{"reason":"Unable to authenticate."}
{code}
Session token is valid for a period of time, currently set to 24 hours.
h3. Refresh Token (reset timer)
Request:
{code} |
Session token is valid for a period of time, currently set to 24 hours.
Refresh Token (reset timer)
Request:
Code Block |
---|
PUT https://ssl.latest.deflaux-test.appspot.com/auth/v1/session
{"sessionToken":"AYcOhWIm9NdOC6BdzzzisQ00"}
{code}
Successful |
Successful Response:
...
Code Block |
---|
HTTP/1.1 200 OK
{code}
|
Error
...
Response,
...
if
...
the
...
session
...
token
...
is
...
invalid:
...
Code Block |
---|
HTTP/1.1 404 Not Found
{"reason":"Unable to validate session."}
{code}
h3. Terminate Session |
Terminate Session (Logout)
...
NOTE:
...
This
...
doesn't
...
work
...
when
...
deployed
...
on
...
AppEngine.
...
Will
...
retest
...
once
...
we
...
make
...
the
...
transition
...
to
...
another
...
platform.
...
Request:
...
Code Block |
---|
DELETE https://ssl.latest.deflaux-test.appspot.com/auth/v1/session
{"sessionToken":"AYcOhWIm9NdOC6BdzzzisQ00"}
{code}
|
Response:
...
Code Block |
---|
HTTP/1.1 204 NO CONTENT
{code}
h2. Sample |
Sample commands,
...
issued
...
from
...
cURL:
...
Create
...
User:
...
curl
...
-k
...
-H
...
"Content-Type:application/json"
...
-H
...
"Accept:application/json"
...
-d
...
"
...
{\"userId\":\"NEWuser\",
...
\"password\":\"demouser-pw\",
...
\"email\":\"demouser@sagebase.org\",
...
\"firstName\":\"demo\",
...
\"lastName\":\"user\",
...
\"displayName\":\"Demo
...
User\"}"
...
-X
...
POST
...
https://ssl.latest.deflaux-test.appspot.com/auth/v1/user
...
Update
...
User:
...
curl
...
-k
...
-H
...
"Content-Type:application/json"
...
-H
...
"Accept:application/json"
...
-d
...
"
...
{\"userId\":\"NEWuser\",
...
\"password\":\"NEWdemouser-pw\",
...
\"email\":\"demouser@sagebase.org\",
...
\"firstName\":\"NEWdemo\",
...
\"lastName\":\"NEWuser\",
...
\"displayName\":\"NEWDemo
...
User\"}"
...
-X
...
PUT
...
https://ssl.latest.deflaux-test.appspot.com/auth/v1/user
...
Send Change Password Email:
curl -k -H "Content-Type:application/json"
...
-H
...
"Accept:application/json"
...
-d
...
"
...
{\"userId\":\"demouser\"}"
...
-X
...
POST
...
https://ssl.latest.deflaux-test.appspot.com/auth/v1/userPasswordEmail
...
Login:
...
curl
...
-k
...
-H
...
"Content-Type:application/json"
...
-H
...
"Accept:application/json"
...
-d
...
"
...
{\"userId\":\"demouser\",
...
\"password\":\"demouser-pw\"}"
...
-X
...
POST
...
https://ssl.latest.deflaux-test.appspot.com/auth/v1/session
...
Refresh
...
session
...
token:
...
curl
...
-k
...
-H
...
"Content-Type:application/json"
...
-H
...
"Accept:application/json"
...
-d
...
"{\"sessionToken\":\"QYNoamrOKK0dBhjZOFfbAg00\"}"
...
-X
...
PUT
...
https://ssl.latest.deflaux-test.appspot.com/auth/v1/session
...
Logout:
...
curl
...
-k
...
-H
...
"Content-Type:application/json"
...
-H
...
"Accept:application/json"
...
-d
...
"
...
{\"sessionToken\":\"QYNoamrOKK0dBhjZOFfbAg00\"}"
...
-X
...
DELETE
...
https://ssl.latest.deflaux-test.appspot.com/auth/v1/session
...
Access repository services anonymously:
curl -H Accept:application/json
...
http://localhost:8080/repo/v1/dataset/test
...
Access repository services with session token (obtained by logging in):
curl -H Accept:application/json
...
-H
...
sessionToken:AprxPRzpmaPm7FXzV1ik0w00
...
http://localhost:8080/repo/v1/dataset/test
...
Authentication of Requests to Platform
Requests shall include a header named "sessionToken" whose value is that returned by the Initiate Session request, above. (The session will timeout eventually, with a nominal duration of 30 min.)
For requests that fail to be authenticated the response will include the headers:
WWW-Authenticate: authenticate Crowd
Crowd-Authentication-Service:
...
https://ssl.latest.deflaux-test.appspot.com/auth/v1/session
...
and a plain text body: "The token provided was invalid or expired."
API for Authorization
TBD