Commit d69c5171 authored by Juliusz Chroboczek's avatar Juliusz Chroboczek

Allow auth server to fallback to password auth.

The authorisation server can now reply with 204 (no content)
in order to request that the client should continue with password
authentication.
parent 3bdd82f0
...@@ -389,10 +389,15 @@ a JSON dictionary of the following form: ...@@ -389,10 +389,15 @@ a JSON dictionary of the following form:
"password": password "password": password
} }
``` ```
If the user is not allowed to join the group, then the authorisation If the user is not allowed to join the group, then the authorisation
server replies with a code of 403 ("not authorised"). If the user is server replies with a code of 403 ("not authorised"), and Galene will
allowed to join, then the authorisation server replies with a signed JWT reject the user. If the authentication server has no opinion about
(a "JWS") the body of which has the following form: whether the user is allowed to join, it replies with a code of 204 ("no
content"), and Galene will proceed with ordinary password authorisation.
If the user is allowed to join, then the authorisation server replies with
a signed JWT (a "JWS") the body of which has the following form:
```javascript ```javascript
{ {
"sub": username, "sub": username,
......
...@@ -477,7 +477,12 @@ ServerConnection.prototype.join = async function(group, username, credentials, d ...@@ -477,7 +477,12 @@ ServerConnection.prototype.join = async function(group, username, credentials, d
throw new Error( throw new Error(
`The authorisation server said: ${r.status} ${r.statusText}`, `The authorisation server said: ${r.status} ${r.statusText}`,
); );
m.token = await r.text(); let data = await r.text();
if(!data)
// empty data, continue with password auth
m.password = credentials.password;
else
m.token = data;
break; break;
default: default:
throw new Error(`Unknown credentials type ${credentials.type}`); throw new Error(`Unknown credentials type ${credentials.type}`);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment