问题标签 [oidc-provider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
701 浏览

node.js - 让 Swagger UI oauth2 与 oidc-provider 一起工作

我正在尝试让 Swagger UI 成功授权给oidc-provider实例。

我在这里设置了一个最小(尽可能)的故障实例:https ://glitch.com/~copper-vise

它的作用是:

  • 在 /doc 上有 swagger UI 提供来自 swagger.yaml 文件的定义
  • 以最少的配置和开发交互运行 oidc 提供程序。

问题是我似乎无法让两者一起工作。看起来它可能是一个 Swagger UI 错误,但考虑到我缺乏 oidc 经验,它可能只是一个配置问题。

要尝试,请单击swagger 界面上的“授权”按钮,使用fooandbarclient_idand client_secret,至少检查 openid 范围并单击“授权”。此时,您应该会收到登录提示。输入您喜欢的任何内容并登录。此时,swagger UI 应该有一个令牌,但我从来没有做到这一点。

我得到的是一个invalid_client错误,似乎 oidc-provider 需要一个 Swagger UI 未提供的授权请求标头。“隐式”流程似乎也根本不起作用。据我所知,这是 oidc-provider 支持的两个流程(使用此配置?)。

我被卡住了,不知道从这里去哪里。文件中的 openapi securitySchemes 配置以及 oidc-provider 和客户端选项的正确组合似乎swagger.yaml应该可以运行。

0 投票
1 回答
1298 浏览

keycloak - 节点 oidc-provider(用于 keycloak)

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

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

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


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

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


我的应用程序如下所示:

0 投票
1 回答
1189 浏览

openid - 未找到 node-oidc-provider 授权码

所以我正在尝试使用panda的node-oidc-provider库,使用typescript来实现一个openID Connect服务器。

尝试将授权代码交换为身份验证令牌时遇到问题。基本上它说代码没有找到,虽然我可以在 mongo 数据库中看到该文档,并且在库使用的适配器的查找函数中放置一个 console.log 来检索代码,它确实被找到了。

我使用此网址获得身份验证:

http://localhost:3000/auth?client_id=test&response_type=code&scope=openid

然后从邮递员那里我会发送这个请求:

响应如下:

深入研究库,我lib/actions/grants/authorization_code.js在第 38 行的 if 检查之前将 console.log 放入文件中。在那里我可以看到该ctx.oidc.params.code变量已使用 auth_code 正确设置,但是从 const 行检索到的代码code = await ctx.oidc.provider.AuthorizationCode.find是未定义的。

这是我的 oidc-config:oidc-config

这是 mongodb 适配器:mongodb-adapter

鉴于我在调试代码中放入的控制台日志,这是我从邮递员发送令牌请求时得到的输出:

我很确定错误是我的,而不是库中的错误。但我似乎无法理解我做错了什么。

更新

进入调试模式,我看到它实际上是在第 26 行的文件lib/models/mixins/is_session_bound.js: >assert.equal(token.accountId, session.accountId(), 'token and session principal are now different');

但我仍然不知道这意味着什么。

0 投票
1 回答
651 浏览

django - Authlib vs OAuthlib:这些库是一样的吗?

我是 OAuth2.0 和 OpenID 协议领域的初学者。我想为多个应用程序实现一个自定义服务器 - 提供程序。因此,将其用于单点登录 (SSO)。我想和python一起工作。到目前为止,我已经在 Python 中找到了四个包,用于 OAuth2.0 和 OpenID Connect 服务器实现:pyoidc、django-oidc-provider、OAuthlib 和 Authlib 的 Django OAuth Toolkit (DOT)。我试图阅读和理解 pyoidc,但它并不是那么有用和简单,缺少基本的东西。我已经尝试过 django-oidc-provider 并且我真的很满意,整个实现非常简单。因此,在这些试验之后,我只剩下 Django OAuth Toolkit(由 OAuthlib 提供)和 Authlib。有人试过吗?这些包是一样的吗?Authlib 是 OAuthlib 库的更新版本吗?到现在为止我唯一知道的信息,

*每一个答案或建议或个人经验都会非常有帮助,并且总是很感激!

再次感谢你的帮助。

0 投票
1 回答
619 浏览

node.js - 如何使用 express 使用 node-oidc-provider access_token?

我相信这是个愚蠢的问题,但是如何将 node-oidc-provider 与 express 一起使用?所以我在客户端获得了 access_token,发送了请求,Bearer {access_token}下一步是什么?如何从该令牌中获取用户?我相信 oidc-provider 必须有一些中间件或任何可用于此的东西,但我没有找到关于该主题的任何文档。我发现的唯一一件事是如何检查用户是否登录

但它对我不起作用,看起来它出于某种原因在内部使用了 cookie,因此在这种情况下会话为空。

0 投票
1 回答
589 浏览

node.js - 如何使用 ExpressJS 针对 mountPath 挂载 node-oidc-provider?

我正在使用node-oidc-provider( v6.29.3) 库来构建一个简单的 OIDC Connect 模拟服务,并且在尝试针对特定的mountPath. 如果安装在上面,这一切都很好,/但尝试安装在上面/oidc不起作用,因为node-oidc-provider忽略mountPath.

我的设置大致是这样的:

我能够连接http://localhost:3000/oidc/.well-known/openid-configuration并接收

使用一个简单的测试我登录和我的日志显示(正确)

但随后,在内部,它重定向到:

我需要内部重定向才能转到

如何告诉 OIDC 提供者通过给定mountPath而不是重定向/

0 投票
1 回答
825 浏览

node.js - oidc-provider 访问 UserInfo enpoint 时提供的令牌无效

我开始在节点 js 中使用带有 oidc 的 OAuth2 服务器。Github 链接

我的目标很简单,访问作为 UserInfo 端点的 https://myserver/me。

在尝试学习如何使用服务器时,我还使用了本指南,在此处输入链接描述 我发现我可以通过向端点 /token 发送请求来创建令牌。

在配置中我添加了这段代码(完整的服务器代码如下):

在邮递员中,我能够通过这个请求获得我的 access_token

我得到这个作为回应:

当我通过 /token/introspection 检查令牌时,我发现令牌等于 jti。所以我认为它实际上返回 token_id 并且我无法访问 /me 端点。

这是我使用的整个服务器示例:

代理设置为 true,因为我在 apache 上设置了 https 以重定向到此服务器。

我试图更改 response_types,但它需要我不想在我的场景中使用的 redirect_uri。

这是我试图这样发布的请求:

响应:

有没有人有类似的问题?不幸的是,我在这里发现了几乎相同的问题, 但没有解决方案。

0 投票
0 回答
37 浏览

session-management - OIDC 会话管理中的“OP 浏览器状态”是什么?

因此,我正在尝试为 IdP 的 OIDC 会话管理集成编写 session_state 值。阅读 会话管理规范,它说使用(除其他外)客户端 ID 和 OP 浏览器状态。

谁能澄清这个 OP Browser State 值实际上是什么?在我的请求中哪里可以找到它?

0 投票
1 回答
363 浏览

node.js - 如何在 Node jS 中集成 OIDC Provider

我尝试将 OIDC 提供程序集成到节点 JS,并且我有一个示例代码。所以,我运行这个示例代码,它抛出了一个错误(无法识别的路由或不允许的方法(GET on /api/v1/.well-known/openid-configuration))。问题是 Issuer(https://localhost:3000)这个发行人工作正常。但我会更改这个 Issuer((https://localhost:3000/api/v1/)) 它不起作用如何解决这个问题,当我在节点 js 中实现 oldc-provider 时我也面临另一个问题。他们的路线被覆盖如何解决这个问题

示例.js

错误

在此处输入图像描述

0 投票
1 回答
1466 浏览

node.js - 如何在节点 OIDC 提供者中获取授权码

我在 Node JS 中实现了 node-OIDC-Provider 我得到了 Id-token 但我需要授权码。所以,当我点击这个 Api(http://localhost:3000/auth?client_id=oidcCLIENT&response_type=code&scope=openid&redirect_uri=http://localhost:3000)它抛出一个错误(' http://localhost:3000/?error =invalid_request&error_description=授权%20Server%20policy%20requires%20PKCE%20to%20be%20used%20for%20this%20request ')。如何修复此错误并获取授权码

示例.js

如何使用节点在 OIDC 中设置授权服务器策略(授权服务器策略需要 PKCE 用于此请求')