节点oidc提供者(用于密钥斗篷)

时间:2019-05-09 08:37:47

标签: keycloak oidc oidc-provider

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

Keycloak正确链接到我的应用程序的登录页面。 输入用户名和密码后,我可以正确转移回密钥斗篷。

但是,密钥斗篷却说“通过身份提供者进行身份验证时发生意外错误”。


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

  

无法使身份提供者进行oauth回调:org.keycloak.broker.provider.IdentityBrokerException:服务器无访问令牌。


我的应用如下:

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 个答案:

答案 0 :(得分:1)

必须将token_endpoint_auth_method配置为实际使用的方法值keycloak。如果为客户端提供了方法设置为none的密码,则oidc-provider将无法通过客户端身份验证。

相关问题