Skip to content
This repository was archived by the owner on Apr 3, 2019. It is now read-only.

Commit 182589b

Browse files
committed
feat(token): return the uid from the /token endpoint
Fixes https://github.com/mozilla/fxa-auth-server/pull/2985/files#r268891903
1 parent 57f5891 commit 182589b

File tree

10 files changed

+22
-0
lines changed

10 files changed

+22
-0
lines changed

fxa-oauth-server/lib/grant.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ module.exports.generateTokens = async function generateTokens(grant) {
119119
const access = await db.generateAccessToken(grant);
120120
const result = {
121121
access_token: access.token.toString('hex'),
122+
user: access.userId.toString('hex'),
122123
token_type: access.type,
123124
scope: access.scope.toString()
124125
};

fxa-oauth-server/lib/routes/token.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ module.exports = {
166166
access_token: validators.token.required(),
167167
refresh_token: validators.token,
168168
id_token: validators.assertion,
169+
user: Joi.string().required(),
169170
scope: validators.scope.required(),
170171
token_type: Joi.string().valid('bearer').required(),
171172
expires_in: Joi.number().max(MAX_TTL_S).required(),

fxa-oauth-server/test/api.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1096,6 +1096,7 @@ describe('/v1', function() {
10961096
assert.equal(res.statusCode, 200);
10971097
assertSecurityHeaders(res);
10981098
assert.ok(res.result.access_token);
1099+
assert.ok(res.result.user);
10991100
assert.equal(res.result.token_type, 'bearer');
11001101
assert.ok(res.result.auth_at);
11011102
assert.ok(res.result.expires_in);

lib/oauthdb/grant-tokens-from-authorization-code.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ module.exports = (config) => {
2828
refresh_token: validators.refreshToken.optional(),
2929
id_token: validators.assertion.optional(),
3030
scope: validators.scope.required(),
31+
user: Joi.string().required(),
3132
token_type: Joi.string().valid('bearer').required(),
3233
expires_in: Joi.number().required(),
3334
auth_at: Joi.number().required(),

lib/oauthdb/grant-tokens-from-credentials.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ module.exports = (config) => {
2626
access_token: validators.accessToken.required(),
2727
refresh_token: validators.refreshToken.optional(),
2828
id_token: validators.assertion.optional(),
29+
user: Joi.string().required(),
2930
scope: validators.scope.required(),
3031
auth_at: Joi.number().required(),
3132
token_type: Joi.string().valid('bearer').required(),

lib/oauthdb/grant-tokens-from-refresh-token.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ module.exports = (config) => {
2424
}),
2525
response: Joi.object({
2626
access_token: validators.accessToken.required(),
27+
user: Joi.string().required(),
2728
scope: validators.scope.required(),
2829
token_type: Joi.string().valid('bearer').required(),
2930
expires_in: Joi.number().required()

test/local/oauthdb/grant-tokens-from-authorization-code.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const oauthdbModule = require('../../../lib/oauthdb');
1010
const error = require('../../../lib/error');
1111
const { mockLog } = require('../../mocks');
1212

13+
const MOCK_USER_ID = '5A6773A8D23E49FDAFCC976882E0B57E';
1314
const MOCK_CLIENT_ID = '0123456789ABCDEF';
1415
const MOCK_AUTHORIZATION_CODE = '1111112222223333334444445555556611111122222233333344444455555566';
1516
const MOCK_ACCESS_TOKEN = 'aaaaaa2222223333334444445555556611111122222233333344444455555566';
@@ -39,6 +40,7 @@ describe('oauthdb/grantTokensFromAuthorizationCode', () => {
3940
mockOAuthServer.post('/v1/token', body => true)
4041
.reply(200, {
4142
access_token: MOCK_ACCESS_TOKEN,
43+
user: MOCK_USER_ID,
4244
scope: '',
4345
token_type: 'bearer',
4446
expires_in: 123,
@@ -52,6 +54,7 @@ describe('oauthdb/grantTokensFromAuthorizationCode', () => {
5254
});
5355
assert.deepEqual(res, {
5456
access_token: MOCK_ACCESS_TOKEN,
57+
user: MOCK_USER_ID,
5558
scope: '',
5659
token_type: 'bearer',
5760
expires_in: 123,

test/local/oauthdb/grant-tokens-from-refresh-token.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const oauthdbModule = require('../../../lib/oauthdb');
1010
const error = require('../../../lib/error');
1111
const { mockLog } = require('../../mocks');
1212

13+
const MOCK_USER_ID = '5A6773A8D23E49FDAFCC976882E0B57E';
1314
const MOCK_CLIENT_ID = '0123456789ABCDEF';
1415
const MOCK_ACCESS_TOKEN = 'aaaaaa2222223333334444445555556611111122222233333344444455555566';
1516
const MOCK_REFRESH_TOKEN = 'bbbbbb2222223333334444445555556611111122222233333344444455555566';
@@ -39,6 +40,7 @@ describe('oauthdb/grantTokensFromRefreshToken', () => {
3940
mockOAuthServer.post('/v1/token', body => true)
4041
.reply(200, {
4142
access_token: MOCK_ACCESS_TOKEN,
43+
user: MOCK_USER_ID,
4244
scope: '',
4345
token_type: 'bearer',
4446
expires_in: 123,
@@ -52,6 +54,7 @@ describe('oauthdb/grantTokensFromRefreshToken', () => {
5254
});
5355
assert.deepEqual(res, {
5456
access_token: MOCK_ACCESS_TOKEN,
57+
user: MOCK_USER_ID,
5558
scope: '',
5659
token_type: 'bearer',
5760
expires_in: 123,
@@ -62,6 +65,7 @@ describe('oauthdb/grantTokensFromRefreshToken', () => {
6265
mockOAuthServer.post('/v1/token', body => true)
6366
.reply(200, {
6467
access_token: MOCK_ACCESS_TOKEN,
68+
user: MOCK_USER_ID,
6569
scope: '',
6670
token_type: 'bearer',
6771
expires_in: 123,
@@ -76,6 +80,7 @@ describe('oauthdb/grantTokensFromRefreshToken', () => {
7680
});
7781
assert.deepEqual(res, {
7882
access_token: MOCK_ACCESS_TOKEN,
83+
user: MOCK_USER_ID,
7984
scope: '',
8085
token_type: 'bearer',
8186
expires_in: 123,

test/local/oauthdb/grant-tokens-from-session-token.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const nock = require('nock');
99
const oauthdbModule = require('../../../lib/oauthdb');
1010
const { mockLog } = require('../../mocks');
1111

12+
const MOCK_USER_ID = '5A6773A8D23E49FDAFCC976882E0B57E';
1213
const MOCK_CLIENT_ID = '0123456789ABCDEF';
1314
const MOCK_ACCESS_TOKEN = 'aaaaaa2222223333334444445555556611111122222233333344444455555566';
1415
const MOCK_REFRESH_TOKEN = 'bbbbbb2222223333334444445555556611111122222233333344444455555566';
@@ -46,6 +47,7 @@ describe('oauthdb/grantTokensFromSessionToken', () => {
4647
mockOAuthServer.post('/v1/token', body => true)
4748
.reply(200, {
4849
access_token: MOCK_ACCESS_TOKEN,
50+
user: MOCK_USER_ID,
4951
scope: 'test1',
5052
token_type: 'bearer',
5153
expires_in: 123,
@@ -58,6 +60,7 @@ describe('oauthdb/grantTokensFromSessionToken', () => {
5860
});
5961
assert.deepEqual(res, {
6062
access_token: MOCK_ACCESS_TOKEN,
63+
user: MOCK_USER_ID,
6164
scope: 'test1',
6265
token_type: 'bearer',
6366
expires_in: 123,
@@ -71,6 +74,7 @@ describe('oauthdb/grantTokensFromSessionToken', () => {
7174
access_token: MOCK_ACCESS_TOKEN,
7275
refresh_token: MOCK_REFRESH_TOKEN,
7376
id_token: MOCK_ID_TOKEN,
77+
user: MOCK_USER_ID,
7478
scope: 'test1 openid',
7579
token_type: 'bearer',
7680
expires_in: 123,
@@ -88,6 +92,7 @@ describe('oauthdb/grantTokensFromSessionToken', () => {
8892
access_token: MOCK_ACCESS_TOKEN,
8993
refresh_token: MOCK_REFRESH_TOKEN,
9094
id_token: MOCK_ID_TOKEN,
95+
user: MOCK_USER_ID,
9196
scope: 'test1 openid',
9297
token_type: 'bearer',
9398
expires_in: 123,

test/remote/oauth_tests.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ describe('/oauth/ routes', function () {
9797

9898
assert.ok(res.access_token);
9999
assert.ok(res.refresh_token);
100+
assert.ok(res.user);
100101
assert.equal(res.scope, SCOPE);
101102
assert.ok(res.auth_at);
102103
assert.ok(res.expires_in);
@@ -124,6 +125,7 @@ describe('/oauth/ routes', function () {
124125
assert.ok(res.access_token);
125126
assert.ok(res.refresh_token);
126127
assert.ok(res.id_token);
128+
assert.ok(res.user);
127129
assert.equal(res.scope, SCOPE);
128130
assert.ok(res.auth_at);
129131
assert.ok(res.expires_in);
@@ -135,6 +137,7 @@ describe('/oauth/ routes', function () {
135137
grant_type: 'refresh_token',
136138
});
137139
assert.ok(res.access_token);
140+
assert.ok(res.user);
138141
assert.equal(res.scope, SCOPE);
139142
assert.ok(res.expires_in);
140143
assert.ok(res.token_type);

0 commit comments

Comments
 (0)