Skip to content

Commit 6a4bf10

Browse files
committed
fix: auth creds selection (#91)
* docs * fix: sign gateway tokens using priv/pub
1 parent 38e1ff7 commit 6a4bf10

File tree

5 files changed

+38
-14
lines changed

5 files changed

+38
-14
lines changed

config/default.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,8 @@ module.exports = {
154154
}
155155
},
156156
rs256: {
157-
pub: '/home/facugon/workspace/theeye/theeye-supervisor/config/jwtRS256.key.pub',
158-
priv: '/home/facugon/workspace/theeye/theeye-supervisor/config/jwtRS256.key'
157+
pub: null,
158+
priv: null
159159
},
160160
secret: '692fc164a0c06a9fd02575cf17688c9e'
161161
},

config/development.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ module.exports = {
4242
}
4343
}
4444
},
45+
authentication: {
46+
rs256: {
47+
pub: join(__dirname, 'jwtRS256.key.pub'),
48+
priv: join(__dirname, 'jwtRS256.key')
49+
},
50+
secret: '692fc164a0c06a9fd02575cf17688c9e'
51+
},
4552
monitor: {
4653
disabled: true,
4754
fails_count_alert: 3,

config/localdev.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
* replace here the default configuration values for your
33
* local development environment
44
*/
5+
const { join } = require('path')
6+
57
module.exports = {
68
storage: {
79
driver: "local"
@@ -47,6 +49,10 @@ module.exports = {
4749
},
4850
authentication: {
4951
// same key must be in every internal service
52+
rs256: {
53+
pub: join(__dirname, 'jwtRS256.key.pub'),
54+
priv: join(__dirname, 'jwtRS256.key')
55+
},
5056
secret: '692fc164a0c06a9fd02575cf17688c9e',
5157
protocol: 'http', // http or https
5258
api: {

core/service/gateway/token.js

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,27 @@
11
const config = require('config')
22
const jwt = require('jsonwebtoken')
3+
const fs = require('fs')
34

45
module.exports = {
56
create (context) {
6-
const key = config.authentication.rs256.priv
7-
return jwt.sign(
8-
{ context },
9-
key, // our Private Key
10-
{
11-
expiresIn: 60, // seconds
12-
algorithm: "RS256"
13-
}
14-
)
7+
const authCfg = config.authentication
8+
9+
// seconds
10+
const signSettings = { expiresIn: 60 }
11+
12+
let key
13+
if (authCfg.rs256?.priv) {
14+
key = fs.readFileSync(authCfg.rs256.priv, 'utf8')
15+
signSettings.algorithm = "RS256"
16+
} else {
17+
key = authCfg.secret
18+
signSettings.algorithm = "HS256"
19+
}
20+
21+
if (!key) {
22+
throw new Error('Authorization system: security key not set')
23+
}
24+
25+
return jwt.sign({ context }, key, signSettings)
1526
}
1627
}

docs/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@
3737
<!-- Docsify v4 -->
3838
<script src="//cdn.jsdelivr.net/npm/docsify@4"></script>
3939
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/emoji.min.js"></script>
40-
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>
41-
<script src="//cdn.jsdelivr.net/npm/docsify-copy-code"></script>
42-
<script src="//cdn.jsdelivr.net/npm/docsify-tabs@1"></script>
40+
<script src="//cdn.jsdelivr.net/npm/docsify-copy-code/dist/docsify-copy-code.min.js"></script>
4341
<script
4442
src="//cdn.jsdelivr.net/npm/docsify-darklight-theme@latest/dist/index.min.js"
4543
type="text/javascript">
4644
</script>
45+
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>
46+
<script src="//cdn.jsdelivr.net/npm/docsify-tabs@1"></script>
4747
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-bash.min.js"></script>
4848
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-batch.min.js"></script>
4949
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-powershell.min.js"></script>

0 commit comments

Comments
 (0)