首页 > 解决方案 > 节点 oidc-provider(用于 keycloak)

问题描述

我正在尝试将基本节点 oidc-provider 应用程序作为我的 keycloak 服务器的 OIDC 提供程序。

Keycloak 正确链接到我的应用程序的登录页面。输入用户名和密码后,我会正确地转移回 keycloak。

但是,keycloak 会说“使用身份提供者进行身份验证时出现意外错误”。


编辑:我调整了 keycloak 日志级别,现在我看到以下错误:

无法使身份提供者 oauth 回调:org.keycloak.broker.provider.IdentityBrokerException:没有来自服务器的 access_token。


我的应用程序如下所示:

const express = require('express');
const Provider = require('oidc-provider');

const app = express();

const clients = [
  {
    client_id: 'my_keycloak_client',
    client_secret: "<someKey>",
    grant_types: ['authorization_code'],
    response_types: ['code'],
    redirect_uris: ['http://localhost:8080/auth/realms/master/broker/oidc/endpoint'],
    token_endpoint_auth_method: 'none'
  }
];

const oidc = new Provider('http://localhost:3001', {
    async findById(ctx, id) {
      return {
          accountId: id,
          async claims() { return { sub: id }; },
      };
    }
});

oidc.initialize({
  clients: clients,
  keystore: {
    keys: [
        {
          kty:"RSA",
          kid: "zid-auth key",
          use: "sig",
          p:"<someKey>",
          q:"<someKey>",
          d:"<someKey>",
          e:"AQAB",
          qi:"<someKey>",
          dp:"<someKey>",
          dq:"<someKey>",
          n:"<someKey>"
      }
    ]
  }
}).then(function () {
    app.use('/', oidc.callback);
    app.listen(3001);
});

标签: keycloakopenid-connectoidc-provider

解决方案


您必须配置token_endpoint_auth_method正确的方法值 keycloak 实际使用。如果为方法设置为none.


推荐阅读