微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法从 OIDC 身份验证代码流中找到访问令牌

如何解决无法从 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 举报,一经查实,本站将立刻删除。