SAML注销失败:发行者不匹配(NodeJS + Okta)

时间:2019-05-02 08:39:47

标签: node.js saml saml-2.0 okta

我正在尝试使用Okta作为我的IdP使用SAML进行注销。我在Okta日志中收到“发行人不匹配”的信息:

我已经设置了一次注销:

上传的证书是我的SP公钥。


明智的代码:

const config = require('../../app/config')
const saml = require('saml2-js')

module.exports = {
  sp: new saml.ServiceProvider({
    entity_id: `${config.HOSTNAME}/saml/assert`,
    private_key: config.SAML_SP_PRIVATE_KEY,
    certificate: config.SAML_SP_PUBLIC_KEY,
    assert_endpoint: `${config.HOSTNAME}/saml/assert`,
    allow_unencrypted_assertion: true,
    sign_get_request: true
  }),

  idp: new saml.IdentityProvider({
    sso_login_url: config.SAML_SSO_LOGIN_URL,
    sso_logout_url: config.SAML_SSO_LOGOUT_URL,
    certificates: config.SAML_SSO_IDP_CERT,
    sign_get_request: true
  })
}

注销功能:

if (!req.signedCookies.token) {
  res.status(400).send('Missing token')
  return
}
const tokenData = await jwtVerify(req.signedCookies.token, config.AUTH_SECRET)
const options = {
  name_id: tokenData.name_id,
  session_id: tokenData.session_id,
  sign_get_request: true
}

const createLogoutRequestUrl = util.promisify(sp.create_logout_request_url).bind(sp)
const logoutUrl = await createLogoutRequestUrl(idp, options)
res.redirect(logoutUrl)

1 个答案:

答案 0 :(得分:0)

确定发现了我的错误:

我的SP entity_id应该是元数据URL

entity_id: `${config.HOSTNAME}/saml/metadata`,

配置也应该反映在okta中: