【发布时间】:2021-10-08 07:55:23
【问题描述】:
我正在从我的节点应用程序调用图形 API。为此,我创建了机密客户端应用程序。我想将令牌缓存存储在数据库(postgres)中。我该怎么做?
此外,每当我重新启动节点应用程序时,msal 会清除其令牌缓存,是否有任何方法可以阻止 msal 节点在应用程序重新启动时清除其缓存?
目前的实现如下:
const fs = require('fs');
const msal = require('@azure/msal-node');
const cachePath = 'cache.json';
const beforeCacheAccess = async(cacheContext) => {
cacheContext.tokenCache.deserialize(fs.readFile(cachePath, "utf-8", (err, d) => {
//console.log("errror", err, d)
}));
};
const afterCacheAccess = async(cacheContext) => {
if (cacheContext.cacheHasChanged) {
fs.writeFile(cachePath, cacheContext.tokenCache.serialize(), (err) => {
//console.log("errror", err)
});
}
};
// Cache Plugin
const cachePlugin = {
beforeCacheAccess,
afterCacheAccess
};
const msalConfig = {
auth: {
clientId: config.MS_CLIENT_ID,
authority: config.AAD_ENDPOINT + 'consumers', //config.TENANT_ID,
clientSecret: config.MS_CLIENT_SECRET,
},
cache: {
cachePlugin // your implementation of cache plugin
},
};
const scopes = ["Mail.ReadWrite", "Mail.Send"]
const cca = new msal.ConfidentialClientApplication(msalConfig);
【问题讨论】:
标签: node.js postgresql msal msal.js