如何解决无法从 OIDC 身份验证代码流中找到访问令牌
我是这项技术的新手,并尝试为我的 nodejs 应用程序实现 oidc 连接。我试图从下面的代码中获取 REST api 调用的访问令牌,但发现无法......下面的代码工作正常,但我想从中获取访问令牌。到目前为止,我可以访问将交换访问令牌的“代码”。
var createError = require('http-errors')
var express = require('express')
var path = require('path')
var cookieParser = require('cookie-parser')
var logger = require('morgan')
const expressSesssion = require('express-session')
const passport = require('passport')
const { Issuer,Strategy } = require('openid-client')
var indexRouter = require('./routes/index')
var usersRouter = require('./routes/users')
var app = express()
app.set('views',path.join(__dirname,'views'))
app.set('view engine','ejs')
app.use(logger('dev'))
app.use(express.json())
app.use(express.urlencoded({ extended: false }))
app.use(cookieParser())
app.use(express.static(path.join(__dirname,'public')))
app.use('/',indexRouter)
Issuer.discover('https://nodejs-sample.criipto.id').then(criiptoIssuer => {
var client = new criiptoIssuer.Client({
client_id: 'urn:criipto:nodejs:demo:1010',client_secret: 'j9wYVyD3zXZPMo3LTq/xSU/sMu9/shiFKpTHKfqAutM=',redirect_uris: ['http://localhost:3000/auth/callback'],post_logout_redirect_uris: ['http://localhost:3000/logout/callback'],token_endpoint_auth_method: 'client_secret_post'
})
app.use(
expressSesssion({
secret: 'keyboard cat',resave: false,saveUninitialized: true
})
)
app.use(passport.initialize())
app.use(passport.session())
passport.use(
'oidc',new Strategy({ client },(tokenSet,userinfo,done) => {
return done(null,tokenSet.claims())
})
)
passport.serializeUser(function (user,done) {
done(null,user)
})
passport.deserializeUser(function (user,user)
})
app.get('/auth',(req,res,next) => {
passport.authenticate('oidc',{ acr_values: 'urn:grn:authn:no:bankid' })(req,next)
})
app.get('/auth/callback',{
successRedirect: '/users',failureRedirect: '/'
})(req,next)
})
app.use('/users',usersRouter)
app.get('/logout',res) => {
res.redirect(client.endSessionUrl())
})
app.get('/logout/callback',res) => {
req.logout()
res.redirect('/')
})
// catch 404 and forward to error handler
app.use(function (req,next) {
next(createError(404))
})
app.use(function (err,req,next) {
// set locals,only providing error in development
res.locals.message = err.message
res.locals.error = req.app.get('env') === 'development' ? err : {}
res.status(err.status || 500)
res.render('error')
})
// enter code here
})
module.exports = app
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。