如何配置 keycloak-(nodejs-)connect 以使用 PKCE?

Posted

技术标签:

【中文标题】如何配置 keycloak-(nodejs-)connect 以使用 PKCE?【英文标题】:How to configure keycloak-(nodejs-)connect to use PKCE? 【发布时间】:2021-08-01 16:31:25 【问题描述】:

我有一个快速应用程序,我想用keycloak-connect 保护它。我还没有找到任何关于如何在这个中间件中使用 PKCE 设置授权代码流的文档或示例。

我认为我已正确配置 Keycloak (IDP),因为来自应用程序的身份验证失败,因为中间件既未传输 code_challenge 也未传输 code_challenge_method 参数,身份验证服务器拒绝:

auth_callback
    1
error
    invalid_request
error_description
    Missing parameter: code_challenge_method
state
    b720bdf4-daf8-4aa7-8525-be02404396a6

中间件配置:


    realm: 'SomeRealm',
    'auth-server-url': 'https://auth-server.url/auth/',
    'ssl-required': 'all',
    resource: 'Some-client-ID',
    'public-client': true,
    'confidential-port': 0,
 

keycloak-connect 甚至能够利用这个流程吗?

【问题讨论】:

【参考方案1】:

keycloak-connect 目前不支持 PKCE。

查看我在https://keycloak.discourse.group/t/keycloak-connect-node-js-pkce/8285找到的讨论,有人建议切换到另一个支持PKCE的库(即node-openid-client)

关于服务器配置,我猜你关注了https://www.keycloak.org/docs/latest/server_admin/#advanced-settings 和关于 PKCE 的部分,所以应该可以按预期工作。

【讨论】:

我设法通过使用 express-openid-connect 库让它工作 :) 感谢您提供有关 keycloak-connect 和 PKCE 的信息

以上是关于如何配置 keycloak-(nodejs-)connect 以使用 PKCE?的主要内容,如果未能解决你的问题,请参考以下文章

使用 nginx 反向代理后面的 keycloak 保护 nodejs 中的路由

如何验证从反应 SPA 中的 keycloak 检索的 nodejs express api 的访问令牌?

如何使用 keyCloak 保护 Angular(accessType-Public)和 Nodejs 应用程序(accesType-bearer-only)

NodeJS + Keycloak 没有快递

从 NodeJS 登录 Keycloak:400 错误请求

Keycloak:使用 nodeJS 的 authZ