问题标签 [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.
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 应用程序中工作(或者,我不挑剔,其他一些应用程序),帮助我:)
reactjs - 如何处理 oidc 静默续订错误
我有一个使用 redux-oidc 对身份服务器进行身份验证的设置。我可以登录,我可以看到令牌过期时,silenRenew 按预期工作。
不过有一个问题。如果我打开我的站点并让计算机进入睡眠状态,当我在到期后返回时,静默更新失败并出现以下错误:
一旦我唤醒计算机,它就不会再试一次。即使我重新加载页面也不行。
这是预期的行为吗?
如果是这样,处理这个问题的正确方法是什么,这样网站就不会死了?
如果没有,有没有人知道我可能做错了什么?
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 应用程序,因此我们使用隐式流程。
oauth-2.0 - 使用 oidc-client 检索状态数据
如何保留用户导航到的原始网址?假设我有一个未经身份验证的用户导航到http://localhost:9000/customer/123
要验证用户身份,我会执行以下操作:
当它返回到我需要访问原始网址的 callback.html 时:
或者也许还有其他获取原始网址的方法?
谢谢你的帮助!
angular - oidc-client js 在 Safari / FF 中失败
我有一个带有用于身份验证的 oidc 客户端的 Angular 应用程序,该代码在 Chrome 和 Edge 上运行良好,但是当我尝试使用 Safari 进行身份验证时,它在多次重试/错误后工作,而在 Firefox 上它根本不起作用。我得到的错误是这样的:
在我看来,它必须按照浏览器管理存储的方式进行,但我不确定这是否还有其他原因。我拥有的版本:
处理认证回调的代码非常简单:
manager
一个UserManager
实例在哪里:
任何想法为什么相同的代码在不同的浏览器上失败?
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 那边。
有人可以帮我解决这个问题吗?
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 中配置其他字段:
- 元数据
- 签名密钥
任何帮助将不胜感激。
c# - 尝试将 IdentityServer4 添加为具有自定义用户存储的 Javascript 应用程序的身份授权
我按照IdentityServer4文档使用默认测试配置(使用内存中的客户端和用户)创建了一个基本的本地实现。此时IS4初始化如下:
然后,我按照说明使用oidc-connect库创建了一个简单的 Javascript 应用程序。这很好用,所以现在我有一个 Javascript 应用程序,它允许用户通过我的 IS4 实例登录。此 JS 应用程序在 IS4 中表示为按照说明使用隐式流的客户端。
我现在想将我的 IS4 实例与我的真实用户商店集成。阅读了几篇文章后,我似乎需要根据此 SO 帖子IResourceOwnerPasswordValidator
和其他各种帖子提供实现。IProfileService
我已经这样做了,现在只使用一个虚拟用户存储库,它与一组虚拟内存用户而不是真正的外部存储一起使用。我的 IS4 初始化现在看起来像这样:
现在,当我返回并测试我的 Javascript 应用程序时,这会变得很奇怪。尝试登录时,我被带到我的 IS4 登录屏幕。我输入了我希望工作的凭据,但返回了无效的用户名或密码。调试我可以看到代码永远不会进入我的ValidateAsync
方法CustomResourceOwnerPasswordValidator
。但是,我偶然发现,如果我输入bob或alice作为用户名和密码(例如,输入bob作为用户名和密码)然后我通过身份验证并可以返回到我的应用程序。这没有任何意义。我确信这些用户名是 IdentityServer4 示例内存用户使用的两个默认用户,这绝非巧合,但您可以在上面看到我不再使用内存用户。事实上,即使我将GetUsers
方法注释掉,这仍然是正确的Config.cs
。
我无法解释这一点,但无论如何我想要的是能够使用我的用户存储。因此,我进一步阅读并看到了我只能IResourceOwnerPasswordValidator
与拥有GrantTypes.ResourceOwnerPassword
. 但是,当我在 IS4 中更改我的 Javascript 应用程序的客户端以使用此授权类型时,当我尝试登录时,我看到了未经授权的客户端错误。
所以我被困住了。我曾认为,既然我的设置与内存用户一起工作,那么使用真正的用户存储不会有太多工作,但显然我缺少一些东西。您的指导将不胜感激。
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 以及如何配置身份服务器时,谁能帮助解决这个问题?
谢谢
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 和更高版本的示例?