问题标签 [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.
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 界面上的“授权”按钮,使用foo
andbar
为client_id
and client_secret
,至少检查 openid 范围并单击“授权”。此时,您应该会收到登录提示。输入您喜欢的任何内容并登录。此时,swagger UI 应该有一个令牌,但我从来没有做到这一点。
我得到的是一个invalid_client
错误,似乎 oidc-provider 需要一个 Swagger UI 未提供的授权请求标头。“隐式”流程似乎也根本不起作用。据我所知,这是 oidc-provider 支持的两个流程(使用此配置?)。
我被卡住了,不知道从这里去哪里。文件中的 openapi securitySchemes 配置以及 oidc-provider 和客户端选项的正确组合似乎swagger.yaml
应该可以运行。
keycloak - 节点 oidc-provider(用于 keycloak)
我正在尝试将基本节点 oidc-provider 应用程序作为我的 keycloak 服务器的 OIDC 提供程序。
Keycloak 正确链接到我的应用程序的登录页面。输入用户名和密码后,我会正确地转移回 keycloak。
但是,keycloak 会说“使用身份提供者进行身份验证时出现意外错误”。
编辑:我调整了 keycloak 日志级别,现在我看到以下错误:
无法使身份提供者 oauth 回调:org.keycloak.broker.provider.IdentityBrokerException:没有来自服务器的 access_token。
我的应用程序如下所示:
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');
但我仍然不知道这意味着什么。
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 库的更新版本吗?到现在为止我唯一知道的信息,
*每一个答案或建议或个人经验都会非常有帮助,并且总是很感激!
再次感谢你的帮助。
node.js - 如何使用 express 使用 node-oidc-provider access_token?
我相信这是个愚蠢的问题,但是如何将 node-oidc-provider 与 express 一起使用?所以我在客户端获得了 access_token,发送了请求,Bearer {access_token}
下一步是什么?如何从该令牌中获取用户?我相信 oidc-provider 必须有一些中间件或任何可用于此的东西,但我没有找到关于该主题的任何文档。我发现的唯一一件事是如何检查用户是否登录:
但它对我不起作用,看起来它出于某种原因在内部使用了 cookie,因此在这种情况下会话为空。
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
而不是重定向/
?
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。
这是我试图这样发布的请求:
响应:
有没有人有类似的问题?不幸的是,我在这里发现了几乎相同的问题, 但没有解决方案。
session-management - OIDC 会话管理中的“OP 浏览器状态”是什么?
因此,我正在尝试为 IdP 的 OIDC 会话管理集成编写 session_state 值。阅读 会话管理规范,它说使用(除其他外)客户端 ID 和 OP 浏览器状态。
谁能澄清这个 OP Browser State 值实际上是什么?在我的请求中哪里可以找到它?
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 用于此请求')