问题标签 [oidc-client-js]

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 回答
2252 浏览

javascript - 带有 oidc-client 的 signinSilentCallback 得到“在存储中找不到用户”

我正在使用带有 angular 4 应用程序的 oidc-client 1.3.0。初始身份验证(signinRedirect)工作得很好。但是,当令牌过期时,它会加载silent-renew.js 并尝试执行以下操作:

它收到一条错误消息(或某种级别的消息),提示“在存储中找不到用户”。因此,用户不会使用新的令牌信息进行更新。

当我进入 oidc-client 时,我可以看到它以 Promise.resolve() 结束,我希望它会发送给用户。

从 UserManager.js 中,这里的用户返回为未定义:

从解决 Promise 的 IFrameNavigator.js :

如果你已经让它在你的 angular4 应用程序中工作(或者,我不挑剔,其他一些应用程序),帮助我:)

0 投票
2 回答
3520 浏览

reactjs - 如何处理 oidc 静默续订错误

我有一个使用 redux-oidc 对身份服务器进行身份验证的设置。我可以登录,我可以看到令牌过期时,silenRenew 按预期工作。

不过有一个问题。如果我打开我的站点并让计算机进入睡眠状态,当我在到期后返回时,静默更新失败并出现以下错误:

一旦我唤醒计算机,它就不会再试一次。即使我重新加载页面也不行。

这是预期的行为吗?

如果是这样,处理这个问题的正确方法是什么,这样网站就不会死了?

如果没有,有没有人知道我可能做错了什么?

0 投票
3 回答
1077 浏览

api - 在 IdentityServer4 中限制用户级别的 api 资源

我们想建立一个通用的身份验证服务,利用 IdentityServer4,我们在其中定义一组可以访问一个或多个 api 的用户。

用户将被全局定义,但只能访问特定的 api。

也许我遗漏了一些东西,但这似乎不受支持。如果用户通过身份验证并收到访问令牌,则他可以访问所有 api。

我已阅读博客文章https://leastprivilege.com/2016/12/16/identity-vs-permissions/并且我完全理解并同意应该在客户端应用程序本身中处理授权,但这是第一级检查如果用户可以访问 api 对我来说似乎微不足道。

我之前使用过 Azure AD 和 ADAL,在 Azure AD 中,可以定义用户可以访问的应用程序(= IdentityServer4 术语中的资源)。请求令牌时,您指定要访问的资源,如果用户无权访问它,则不会返回访问令牌。

谁能告诉我设置它的正确方法是什么?我们的大多数应用程序都是 Angular SPA 应用程序,因此我们使用隐式流程。

0 投票
1 回答
9317 浏览

oauth-2.0 - 使用 oidc-client 检索状态数据

如何保留用户导航到的原始网址?假设我有一个未经身份验证的用户导航到http://localhost:9000/customer/123

要验证用户身份,我会执行以下操作:

当它返回到我需要访问原始网址的 callback.html 时:

或者也许还有其他获取原始网址的方法?

谢谢你的帮助!

0 投票
1 回答
1645 浏览

angular - oidc-client js 在 Safari / FF 中失败

我有一个带有用于身份验证的 oidc 客户端的 Angular 应用程序,该代码在 Chrome 和 Edge 上运行良好,但是当我尝试使用 Safari 进行身份验证时,它在多次重试/错误后工作,而在 Firefox 上它根本不起作用。我得到的错误是这样的:

在我看来,它必须按照浏览器管理存储的方式进行,但我不确定这是否还有其他原因。我拥有的版本:

处理认证回调的代码非常简单:

manager一个UserManager实例在哪里:

任何想法为什么相同的代码在不同的浏览器上失败?

0 投票
5 回答
15265 浏览

oidc-client-js - 在 Angular 5 中,静默刷新不适用于 OIDC 客户端

我对oidc-client的静默刷新有疑问。登录工作正常,我可以获得令牌。但是,静默刷新不会触发,没有任何反应。当我订阅检查令牌过期的方法(subscribeevents下面的 authservice.ts 中的方法)时,这些方法永远不会触发 -isLoggedIn()即使令牌已过期,该方法也始终返回 true。

这是我的代码:

然后我的身份验证服务:

我的配置:

我还尝试使用这样的静态页面:

它也从未被解雇过

为了测试,我将 ID 令牌的有效期更改为 10 分钟。我使用 Azure AD Connect(Azure 中的 Open Id Connect),微软表示它与 Open ID Connect 标准不完全兼容......所以我不知道它是在我这边还是在 Azure 那边。

有人可以帮我解决这个问题吗?

0 投票
2 回答
4829 浏览

steam-web-api - 使用 Steam OpenId 登录(oidc-client-js)

当客户端身份验证,接收 token_id,将其发送到服务器和服务器检索该 token_id 的客户端帐户信息库时,我已经使用谷歌完成了身份验证。这很容易,因为它已记录在案。现在我尝试使用 Steam,但实际上我在steam docs中有 4 行关于 OpenID 的内容。我开始使用 openID 浏览器库oidc-client-js但 Steam 文档对我没有帮助。openID 库需要这些字段:

  • 权威
  • client_id
  • 重定向uri
  • 响应类型
  • 范围

Steam 文档只提供提供商、密钥和域名,我真的不知道从哪里开始。

只需为您选择的语言和平台下载 OpenID 库,并使用http://steamcommunity.com/openid作为提供程序。返回的 Claimed ID 将包含用户的 64 位 SteamID。声明的 ID 格式为:http ://steamcommunity.com/openid/id/

我得到 CORS Header 问题,因为我使用 localhost 而不是安全连接,我认为我需要在 oidc-client-js 中配置其他字段:

  • 元数据
  • 签名密钥

任何帮助将不胜感激

0 投票
1 回答
381 浏览

c# - 尝试将 IdentityServer4 添加为具有自定义用户存储的 Javascript 应用程序的身份授权

我按照IdentityServer4文档使用默认测试配置(使用内存中的客户端和用户)创建了一个基本的本地实现。此时IS4初始化如下:

然后,我按照说明使用oidc-connect库创建了一个简单的 Javascript 应用程序。这很好用,所以现在我有一个 Javascript 应用程序,它允许用户通过我的 IS4 实例登录。此 JS 应用程序在 IS4 中表示为按照说明使用隐式流的客户端。

我现在想将我的 IS4 实例与我的真实用户商店集成。阅读了几篇文章后,我似乎需要根据此 SO 帖子IResourceOwnerPasswordValidator和其他各种帖子提供实现。IProfileService

我已经这样做了,现在只使用一个虚拟用户存储库,它与一组虚拟内存用户而不是真正的外部存储一起使用。我的 IS4 初始化现在看起来像这样:

现在,当我返回并测试我的 Javascript 应用程序时,这会变得很奇怪。尝试登录时,我被带到我的 IS4 登录屏幕。我输入了我希望工作的凭据,但返回了无效的用户名或密码。调试我可以看到代码永远不会进入我的ValidateAsync方法CustomResourceOwnerPasswordValidator但是,我偶然发现,如果我输入bobalice作为用户名和密码(例如,输入bob作为用户名密码)然后我通过身份验证并可以返回到我的应用程序。这没有任何意义。我确信这些用户名是 IdentityServer4 示例内存用户使用的两个默认用户,这绝非巧合,但您可以在上面看到我不再使用内存用户。事实上,即使我将GetUsers方法注释掉,这仍然是正确的Config.cs

我无法解释这一点,但无论如何我想要的是能够使用我的用户存储。因此,我进一步阅读并看到了我只能IResourceOwnerPasswordValidator与拥有GrantTypes.ResourceOwnerPassword. 但是,当我在 IS4 中更改我的 Javascript 应用程序的客户端以使用此授权类型时,当我尝试登录时,我看到了未经授权的客户端错误。

所以我被困住了。我曾认为,既然我的设置与内存用户一起工作,那么使用真正的用户存储不会有太多工作,但显然我缺少一些东西。您的指导将不胜感激。

0 投票
1 回答
822 浏览

angular - Angular2 中的 Oidc-client 与 hashlocation 在 redirect_uri 中给出错误

我正在关注Authenticating Angular2 with Oidc-client并尝试实现身份验证部分。因为 angular2 正在使用

我的网址将更改为例如:http://localhost:4200/#/dashboard

在身份服务器和客户端,我使用 redirect_uri 作为

但是在输入用户名和密码后,页面重定向到http://localhost:4200/#/id_token并被视为无效路由。

在角度应用程序中使用 hashlocationstrategy 以及如何配置身份服务器时,谁能帮助解决这个问题?

谢谢

0 投票
2 回答
11017 浏览

angular - oidc-client-js 回调后无响应状态

我认为这是与 angular 5.2.8 & 6 相关的错误。使用 Angular 5.2.7 可以正常工作。我创建了一个ng5 分支并将 angular 更新到最新的 5.2.8 和错误 com!任何人都可以指导我使用 oidc-client-js 到 Angular 5.2.8 和更高版本的示例?