Я использую плагин https://github.com/AzureAD/passport-azure-ad для работы с Azure AD Graph API.
Я привел пример, приведенный здесь: https://github.com/AzureADQuickStarts/WebApp-OpenIDConnect-NodeJS
Пока мой код работает, все хорошо в разработке. Я хочу реализовать то же самое для производственного использования. И теперь я хочу использовать кеш Azure Redis для достижения того же. Я пытался сделать это по-другому, но почему-то этого не происходит, пожалуйста, посмотрите ниже код, который у меня есть до сих пор
passport.use('oidc',new OIDCStrategy(
{
identityMetadata: `${process.env.OAUTH_AUTHORITY}${process.env.OAUTH_ID_METADATA}`,
clientID: process.env.OAUTH_APP_ID,
responseType: 'code id_token',
responseMode: 'form_post',
redirectUrl: process.env.OAUTH_REDIRECT_URI,
allowHttpForRedirectUrl: true,
clientSecret: process.env.OAUTH_APP_PASSWORD,
validateIssuer: false,
passReqToCallback: false,
scope: process.env.OAUTH_SCOPES.split(' ')
},
signInComplete
));
async function signInComplete(iss, sub, profile, accessToken, refreshToken, params, done) {
if (!profile.oid) {
return done(new Error("No OID found in user profile."));
}
//
try{
const user = await graph.getUserDetails(accessToken);
if (user) {
// Add properties to profile
profile['email'] = user.mail ? user.mail : user.userPrincipalName;
console.log(profile['email']);
}
} catch (err) {
return done(err);
}
// Create a simple-oauth2 token from raw tokens
let oauthToken = oauth2.accessToken.create(params);
// Save the profile and tokens in user storage
users[profile.oid] = { profile, oauthToken };
return done(null, users[profile.oid]);
}
Я знаю, что в redisClient есть параметры get и set для его использования, но я я действительно не уверен, где и как мне реализовать то же самое. Пока я знаю, что могу использовать
passport.authenticate('oidc');
и использовать то же самое в
router.post('/checkAuth',passport.authenticate('oidc'), (req, res,next)=> {
Любые предложения или указатели будут очень признательны.