当前位置: 首页 > 知识库问答 >
问题:

节点oidc-提供者(用于keycloak)

桑睿识
2023-03-14

我正在尝试让一个基本的节点oidc提供者应用程序作为我的密钥斗篷服务器的oidc提供者。

Keycoat正确链接到我的应用程序的登录页面。输入用户名和密码后,我会被正确地传送回keycoat。

但是,密钥斗篷显示“使用身份提供者进行身份验证时出现意外错误”。

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

无法进行身份提供程序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);
});

共有1个答案

董良策
2023-03-14

您必须将< code > token _ endpoint _ auth _ method 配置为keycloak实际使用的正确方法值。如果为方法设置为< code>none的客户端提供了密码,oidc-provider将无法通过客户端身份验证。

 类似资料:
  • 我正在尝试将一个基本的节点 oidc 提供程序应用程序作为我的密钥斗篷服务器的 OIDC 提供程序。 钥匙斗篷正确链接到我的应用程序的登录页面。输入用户名和密码后,我正确转移回钥匙斗篷。 但是,密钥保护比说“使用标识提供者进行身份验证时出现意外错误”。 身份提供者配置:这里 我的应用: 从KeyClope跟踪: 注意:当我使用postman测试令牌endpoint时,它工作正常

  • 提供者(Provider) 是一个连接以太坊网络的抽象,用与查询以太坊网络状态或者发送更改状态的交易。 EtherscanProvider 和 InfuraProvider 提供连接公开的第三方节点服务提供商,无需自己运行任何以太坊节点。 JsonRpcProvider 和 IpcProvider 允许连接到我们控制或可以访问的以太坊节点(包括主网,测试网,权威证明(PoA)节点或Ganache)

  • 问题内容: 我有一个包含20个左右注释实现的接口。如果知道在编译时需要的内容,则可以注入正确的内容,但是现在我需要根据运行时参数动态注入内容。 据我了解的文档,我将不得不使用20次左右的注射,然后再使用所需的注射,这对我来说似乎太过分了。有没有一种方法可以绑定特定的实现,然后仅将其注入我的类中? 问题答案: 注入一个[MapBinder](https://google.github.io/guic

  • The Ethereum eco-system provides many methods of interacting with the blockchain. In ethers.js we expose a Provider API that covers the breadth of operations, however often it is useful to inter-opera

  • 对于下面的XML,我正在尝试根据属性和节点值提取节点。 基于属性class=pass和h1包含('objectives'),我试图提取以下输出。 “目标”是节点值字符串“1任务目标”的一部分 1任务目标1目标2 下面是我正在尝试的XPath表达式。然而,这并没有产生任何输出。你能指出我做错了什么吗? 谢谢

  • 在 Pagination 和 Sorting 部分, 我们已经介绍了如何允许终端用户选择一个特定的数据页面,根据一些字段对它们进行展现与排序。 因为分页和排序数据的任务是很常见的,所以Yii提供了一组封装好的data provider类。 数据提供者是一个实现了 yii\data\DataProviderInterface 接口的类。 它主要用于获取分页和数据排序。它经常用在 data widge