首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要使用Passport-azure-ad npm模块和OIDCStrategy获取访问令牌的帮助

需要使用Passport-azure-ad npm模块和OIDCStrategy获取访问令牌的帮助
EN

Stack Overflow用户
提问于 2021-05-06 04:06:31
回答 1查看 46关注 0票数 0

我正在尝试从我的NodeJS express AAD应用程序调用Microsoft Graph API,但我无法从AAD获取访问令牌。

我能够成功登录,也能够获取用户的配置文件(能够获取代码和id_token),接下来我想获取访问令牌,以便调用make the Graph Api调用。

有人能帮我理解一下如何从OIDCStrategy获取访问令牌吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-12 01:03:59

我找到了解决同样问题的方法。

代码语言:javascript
复制
passport.use(new OIDCStrategy({
        identityMetadata: configAuth.creds.identityMetadata,
        clientID: configAuth.creds.clientID, 
        responseType: configAuth.creds.responseType,
        responseMode: configAuth.creds.responseMode,
        redirectUrl: configAuth.creds.redirectUrl, 
        allowHttpForRedirectUrl: configAuth.creds.allowHttpForRedirectUrl,
        clientSecret: configAuth.creds.clientSecret,
        validateIssuer: configAuth.creds.validateIssuer,
        isB2C: configAuth.creds.isB2C,
        issuer: configAuth.creds.issuer,
        passReqToCallback: configAuth.creds.passReqToCallback, 
        scope: configAuth.creds.scope,
        loggingLevel: configAuth.creds.loggingLevel, 
        nonceLifetime: configAuth.creds.nonceLifetime,
        nonceMaxAmount: configAuth.creds.nonceMaxAmount,
        useCookieInsteadOfSession: configAuth.creds.useCookieInsteadOfSession,
        cookieEncryptionKeys: configAuth.creds.cookieEncryptionKeys,
        clockSkew: configAuth.creds.clockSkew,
    }, (req, iss, sub, profile, access_token, refresh_token, params, done) => {
        console.log(`Profile >>>> ${JSON.stringify(profile)}`);
        if(!profile.oid) {
            return done(new Error("No oid found"), null);
        }
        profile.tokens = params;
        // console.log(`Access-Token >>>> ${access_token}`);
        // console.log(`Refresh-Token >>>> ${refresh_token}`);       
        // console.log(`Profile >>>>>>>>>>>>>> ${JSON.stringify(profile)}`);
        process.nextTick(() => {
            findByOid(profile.oid, (err, user) => {
                if(err) {
                    return done(err);
                }
                if(!user) {
                    users.push(profile);
                    return done(null, profile);
                }
                return done(null, user);      
            });
        });
    }));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67408096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档