NodeJS 如何在节点OIDC提供程序中使用令牌端点获取access_token

wnavrhmk  于 2023-01-12  发布在  Node.js
关注(0)|答案(2)|浏览(239)

我尝试使用节点oidc提供程序使用授权代码流获取access_token和refresh_token。我获得了auth_code。但无法获取访问令牌和刷新令牌如何解决此问题。我参考了许多文档,但无法获取。

OIDC配置

const oidc = new Provider('http://localhost:3000', {
  clients: [
    {
      client_id: 'foo',
      client_secret: 'bar',
      redirect_uris: ['https://jwt.io'], // using jwt.io as redirect_uri to show the ID Token contents
      response_types: ['code'],
      grant_types: ['authorization_code'],
      token_endpoint_auth_method: 'none',
    },
  ],
  cookies: {
    keys: 'secretkey'
  },
  pkce: {
    required: true
  },
});

// Heroku has a proxy in front that terminates ssl, you should trust the proxy.
oidc.proxy = true;
app.use(oidc.callback())

我还获得了auth_code

如何使用node-oidc提供程序获取访问令牌和刷新令牌

zbsbpyhn

zbsbpyhn1#

1.您的访问令牌请求缺少PKCE code_verifier参数。
1.客户端的身份验证方法被设置为none,因此不需要传递任何授权头。
你可以用DEBUG=oidc-provider:*启动你的提供程序进程来获得这些错误的更多细节。

pgvzfuti

pgvzfuti2#

客户端无效,但您输入了“client_id”,这意味着您正在启用功能:

{
    clientCredentials: { 
        enabled: true 
    }
 }

因此,您必须提供client_secret,而在oidc-provider源代码中,我看到它总是选中code_verifier,因此您应该提供它

相关问题