从 NodeJS 登录 Keycloak:400 错误请求

     2023-02-19     109

关键词:

【中文标题】从 NodeJS 登录 Keycloak:400 错误请求【英文标题】:Logging into Keycloak from NodeJS: 400 Bad Request 【发布时间】:2021-12-30 02:06:19 【问题描述】:

我正在尝试从 NodeJS 代码登录 Keycloak,但我正在努力寻找工作示例。

https://www.keycloak.org/docs/latest/securing_apps/index.html#_nodejs_adapter 上的文档不完整,没有描述最重要的事情,即您如何实际登录。

我根据 keycloak 文档的基本信息和keycloak-nodejs-connect 的测试修改了我的示例:

"keycloak-connect": "15.0.2",
"express-session": "1.17.2",

const Keycloak = require('keycloak-connect');
const session = require('express-session');

const keycloakConfig = 
  serverUrl: "http://keycloak.intern/auth",
  realm: "client-realm",
  clientId: "test-client",
  bearerOnly: true

const memoryStore = new session.MemoryStore();
const keycloak = new Keycloak(store: memoryStore, keycloakConfig)

async function loginUser(username, password) 
  return await keycloak.grantManager.obtainDirectly(username, password).then(grant => 
    return grant
  )

const main = async () => 
  let grant = await loginUser('testuser@localhost.com', "test_password")



main().then(()=>
  process.exit(0)
, (err)=>
  console.error(err)
  process.exit(1)
)

但是,我遇到了错误:

错误:400:错误请求

在服务器端,我看到了日志:

2021-11-19T10:16:49,312+01:00 WARN [org.keycloak.events](默认任务 56)type=LOGIN_ERROR,realmId=client-realm,clientId=test-client,userId=null, ipAddress=192.168.111.2222,error=not_allowed,auth_method=oauth_credentials,grant_type=password,client_auth_method=client-secret

因此调用了 keycloak API,但是,用户名不知何故没有正确给出。

方法的签名是OK的,它得到了用户名,它期望如何。

我在这里缺少什么?

【问题讨论】:

您要使用哪个流程? “我要登录”不是正确答案。 @JanGaraj 直接授权,类似于 Java 的 org.keycloak.admin.client.Keycloak.getInstance(...) 【参考方案1】:

错误not_allowed 表示不允许直接授予。在test-client Keycloak 客户端配置中启用Direct Access Grants Enabled

【讨论】:

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

】如何验证从反应SPA中的keycloak检索的nodejsexpressapi的访问令牌?【英文标题】:HowtoverifytheaccesstokenatnodejsexpressapiretrievedfromkeycloakinareactSPA?【发布时间】:2021-11-2117:07:14【问题描述】:我在我的reactSPA中收到了来自keycloak的访问令... 查看详情

NodeJs 和 Keycloak 集成给出 403?

】NodeJs和Keycloak集成给出403?【英文标题】:NodeJsandKeycloakIntegrationgiving403?【发布时间】:2020-09-2909:19:17【问题描述】:我刚刚从Github获取了演示代码所以我改变了keycloak-config.jsonvarkeycloakConfig=clientId:\'my-api\',bearerOnly:true,serverUrl:\'... 查看详情

如何将角度应用程序从keycloak登录重定向到特定路线

】如何将角度应用程序从keycloak登录重定向到特定路线【英文标题】:Howtoredirectangularappfromkeycloaklogintospecificroutes【发布时间】:2020-01-1419:00:45【问题描述】:我正在编写一个Angular8应用程序,它使用Keycloak7.0.0进行用户身份验证... 查看详情

Keycloak-connect with express,有没有简单的Keycloak登录方法

】Keycloak-connectwithexpress,有没有简单的Keycloak登录方法【英文标题】:Keycloak-connectwithexpress,isthereasimpleKeycloakloginmethod【发布时间】:2020-04-0501:24:14【问题描述】:我正在使用Keycloak-connect,它是nodejs的Keycloak适配器。在我的快速应... 查看详情

如果 keycloak 会话过期,我如何重定向到登录页面?

】如果keycloak会话过期,我如何重定向到登录页面?【英文标题】:ifthekeycloaksessionexpired,HowdoIredirecttologinpage?【发布时间】:2021-06-0702:12:23【问题描述】:我正在尝试在我的node.js应用程序上实现keycloak。我在我的node.js应用程序上... 查看详情

400 Bad Request (NodeJs) 将数据从 NodeJs 发布到 PHP

】400BadRequest(NodeJs)将数据从NodeJs发布到PHP【英文标题】:400BadRequest(NodeJs)PostDatafromNodeJstoPHP【发布时间】:2022-01-2108:02:03【问题描述】:我有这些代码,但我找不到问题所在?我一直在寻找大约2个小时的答案。我希望你能帮助我... 查看详情

从 Keycloak 中的 REST API 中提取角色

】从Keycloak中的RESTAPI中提取角色【英文标题】:ExtractrolesfromRESTAPIinKeycloak【发布时间】:2019-08-0815:12:06【问题描述】:在我的公司,我们需要从Keycloak提供的RESTAPI中提取登录用户的角色。我们查看了Keycloak文档,但找不到我们正... 查看详情

keycloak 管理客户端在 executeActionsEmail() 上返回 400

】keycloak管理客户端在executeActionsEmail()上返回400【英文标题】:keycloakadminclientreturns400onexecuteActionsEmail()【发布时间】:2020-12-2106:42:09【问题描述】:代码之前可以正常工作,但我们不确定它何时崩溃,因为我们非常频繁地更新key... 查看详情

从 postman 访问 keycloak API

】从postman访问keycloakAPI【英文标题】:AccessthekeycloakAPIfrompostman【发布时间】:2018-08-2502:18:53【问题描述】:我试图从邮递员那里访问keycloakAPI。但它显示400错误请求。我以以下格式调用api。http://hostname:8080/auth/realms/master/protocol/op... 查看详情

Keycloak Kerberos 阻止登录对话框

】KeycloakKerberos阻止登录对话框【英文标题】:KeycloakKerberospreventlogindialog【发布时间】:2021-11-0508:08:09【问题描述】:我使用keycloak来管理基于Java的Web应用程序的身份验证。我配置了一个在内部网络中运行良好的KerberosUserFederation... 查看详情

KeyCloak 中多个客户端的唯一登录

】KeyCloak中多个客户端的唯一登录【英文标题】:UniqueloginformultipleclientsinKeyCloak【发布时间】:2020-02-0520:25:25【问题描述】:在Keycloak中,是否可以为同一领域中的所有客户端仅登录一次?我以这种方式配置了服务器(从管理控... 查看详情

NodeJS + Keycloak 没有快递

】NodeJS+Keycloak没有快递【英文标题】:NodeJS+Keycloakwithoutexpress【发布时间】:2022-01-1505:52:26【问题描述】:我正在尝试使用Keycloak保护我的Node.JS应用程序,但我的应用程序不使用express。我进行了广泛的搜索,但对我来说,这似乎... 查看详情

keycloak 8 登录更新密码 ftl 文件未加载

】keycloak8登录更新密码ftl文件未加载【英文标题】:keycloak8loginupdatepasswordftlfilenotloading【发布时间】:2020-10-1604:38:37【问题描述】:我正在使用keycloak8,对于用户,我正在从keycloak管理控制台设置更新密码凭据重置-然后我成功收... 查看详情

Keycloak:使用 nodeJS 的 authZ

】Keycloak:使用nodeJS的authZ【英文标题】:Keycloak:authZwithnodeJS【发布时间】:2018-04-2705:26:20【问题描述】:我正在尝试使用keycloak授权机制来保护RESTAPI。我的API在NodeJS中,带有express。假设我有这个API:http://www.example.com/api/v1/houses... 查看详情

Keycloak nodeJS总是得到403

】KeycloaknodeJS总是得到403【英文标题】:KeycloaknodeJSalwaysget403【发布时间】:2019-05-1510:32:32【问题描述】:我有一个NodeJS应用程序正在运行,它想用keycloak保护它。我已经完成了与其他受KeyCloak(角色、范围)保护的应用程序类似... 查看详情

在使用 Keycloak 保护的 web 应用程序中获取登录用户名

】在使用Keycloak保护的web应用程序中获取登录用户名【英文标题】:FetchLoggedInUsernameinawebappsecuredwithKeycloak【发布时间】:2015-10-3002:12:04【问题描述】:我已使用基于标准Wildfly的Keycloak适配器通过Keycloak保护企业应用程序。我面临... 查看详情

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

】如何配置keycloak-(nodejs-)connect以使用PKCE?【英文标题】:Howtoconfigurekeycloak-(nodejs-)connecttousePKCE?【发布时间】:2021-08-0116:31:25【问题描述】:我有一个快速应用程序,我想用keycloak-connect保护它。我还没有找到任何关于如何在这... 查看详情

如何在 NodeJS 中自定义 keycloak 错误消息

】如何在NodeJS中自定义keycloak错误消息【英文标题】:HowcancustomkeycloakerrormessageinNodeJS【发布时间】:2020-12-0414:46:34【问题描述】:我是node上的新手,我有一个带有express的restapi,一些端点使用keycloak-connect具有keycloak安全性。发生... 查看详情