-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathconnect.js
68 lines (60 loc) · 2.69 KB
/
connect.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
const axios = require('axios')
const jose = require('node-jose')
// секретный ключ пользователя (private key). ID данного ключа (kid) = "1",
// его вам выдали при постановке ключа. Или же его потом можно найти в настройках в web интерфейсе
const secret =
{
"kty":"EC",
"alg":"ES256",
"crv":"P-256",
"x":"pSH0jvbtVZiseTpJZk0_yfudEIv86uwjeH_gr1qmOGA",
"y":"eGdC9EIGmhCheM_T8vhS4Qwk7RfaPRBxF3W5omgBc_M",
"d":"DuSjR5eZBp5S-9HNKA8kRQFA_3Akkept-dTbwFoq_3w"
}
// обязательные claims
// required claims
const claims = {
// user identity, one of: email, uid (user id), subject, tgid (telegram id)
// идентификатор пользователя, одно из: email, uid (user id), subject, tgid (telegram id)
// Email won't work in case when a user has two accounts with the same email, prefer user id (uid) for such case.
// Email не будет работать в случае если у пользователя два аккаунта с один и тем же email (auth0 & google)
// Используйте uid в таких случаях
email: "[email protected]",
// leave as is
// оставляем как есть
aud: "usr",
// token issue time
// время когда выпущен токен
iat: (Date.now() / 1000) | 0,
// unique token identifier
// уникальный идентификатор токена
jti: jose.util.randomBytes(8).toString('base64')
}
async function connect() {
// generate jwt token from users' private key
// генерируем jwt token из секретного ключа пользователя
const jwt = await jose.JWS.createSign(
{
alg: 'ES256',
format: 'compact',
// You omit this header if the account has a single key
// Этот заголовок можно не указывать, если у аккаунта единственный ключ
fields: { kid: "1" }
},
{key: secret, reference: false},
)
.update(JSON.stringify(claims))
.final()
// set auth header with token
// установливаем заголовок аутентификации с токеном
const options = {
headers: {Authorization: `Bearer ${jwt}`},
}
// change to bitzlato api host
// изменить на хост api bitzlato
axios.get('https://www.bitzlato.com/api/auth/whoami', options)
.then(response => {
console.log(response.data)
})
}
connect().then(_ => _);