问题标签 [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 回答
6408 浏览

redirect - Identity Server 4 - 检查 iframe 会话问题 - oidc 客户端

我在我的角度应用程序中使用OIDC 客户端对身份服务器 4 进行身份验证。一切正常,直到我退出。

我启用了监视会话(默认启用),以便其他浏览器可以检测到注销,并且我可以在同一浏览器的其他选项卡中注销用户。当我从一个选项卡中注销时,另一个选项卡会向身份服务器发出请求以获取静默刷新令牌,并获得成功。我希望其他浏览器也能注销。如果我在另一个选项卡中按 F5,那么是的,它会被重定向到再次登录。但不是自动的。

0 投票
1 回答
2468 浏览

reactjs - 如何从 Identity Server 获取 access_token 命中令牌端点,使用 fetch 从反应客户端传递凭据?

我需要通过来自反应客户端的 API 调用(获取)从 Identity Server 获取访问令牌。我不想从 Identity Server(隐式流)加载登录 UI,输入凭据,重定向到 redirect_uri,然后从 url 获取 access_token。我只想通过 API 调用(获取)将凭据传递给 Token 端点,并从反应客户端获取访问令牌(类似于http://docs.identityserver.io/en/release/endpoints/token.html)。

端点是 - http://localhost/identityserver/core/connect/token

我应该将哪些其他数据传递给 fetch 调用?

以下是 id 支持的响应和授权类型:

response_types_supported: [ "code", "token", "id_token", "id_token token", "code id_token", "code token", "code id_token token" ], grant_types_supported: [ "authorization_code", "client_credentials", "password", "refresh_token", "implicit" ],

我可以知道如何使用 oidc-client 包(https://www.npmjs.com/package/oidc-client)来实现这一点吗?如果需要更多详细信息,请告诉我,以便我可以用更多信息更新问题。

0 投票
1 回答
945 浏览

identityserver4 - IdentityServer4 oidc-client 错误 - 设置与登录状态的权限不匹配

我在 NGINX 反向代理后面有一个 IdentityServer4 和 C# .NET Core Web 应用程序:

https://id.local.domain -> http://id-local

https://web.local.domain -> http://web-local

我可以在 ID4 登录页面上访问并输入我的凭据,但是在从 ID4 重定向回我的 /account/callback 页面后,出现以下 JavaScript 错误:

错误:设置与登录状态的权限不匹配

这是我的 oidc 调用、NGINX + ID4 设置或其他问题的问题吗?我试过使用:

这是要输入的正确网址吗?我是否需要使用 options.IssuerUri 而不是/以及?

0 投票
1 回答
2134 浏览

asp.net-core - IdentityServer 会话 cookie 不滑动

我面临一个奇怪的问题。我可以进行静默更新,但我的 IdP cookie 正在滑动。更深入的问题...

我有一个 IdP 会话 cookie (IdentityServer) 生命周期设置为在 15 分钟内到期,并且我也为访问令牌和 id 令牌生命周期保持了相同的时间。

在我的 JavaScript 客户端上,我每 2 分钟检查一次用户活动,如果在最后 2 分钟内有活动,我将更新令牌。

我能够通过更新的过期时间获得访问令牌和 ID 令牌,但在 15 分钟(IdP cookie 生命周期)后,静默更新调用失败并且 IdP 正在注销。
我检查了静默续订呼叫的响应,我看到响应标头中没有设置 cookie(具有新的滑动到期时间)。

我应该在服务器端启用任何设置吗?感谢你的帮助。

0 投票
1 回答
1076 浏览

angular - 多租户和 IdentityServer 4 和 Angular 和 oidc-client

我们正在使用 Angular 6 开发一个多租户应用程序。每个租户使用他们的子域访问应用程序,比如client1.app.comclient2.app.com等等。

出于身份验证目的,我们使用 IdentityServer 4。我们遵循的步骤类似于以下提到的步骤:https ://identityserver4.readthedocs.io/en/release/quickstarts/7_javascript_client.html 。

一切正常 - 我们坚持的一点是我们如何redirect_uri在 Angular 客户端应用程序中指定 。

如您所知,redirect-uriIdentity Server 使用它来返回身份验证结果和信息。根据oidc-client库,它redirect_uri是一个字符串,我们不能指定多个值。但是,在我们的案例中,基于客户端的子域,情况redirect-uri会有所不同,并且必须是动态的。

有没有人遇到过类似的情况?我忽略了什么吗?任何解决上述问题的指针都会有很大帮助。

谢谢苏希尔

0 投票
1 回答
336 浏览

identityserver4 - oidc-client-js 对敏感数据的重新认证

我正在使用oidc-client-js库针对来自 Angular 应用程序的 IdentityServer4 实现处理 OIDC 重定向 SSO 样式身份验证。应用程序中的 IdToken/Cookie 可以使用 1 天以上。访问令牌的生命周期较短,并且会进行静默刷新。有时应用程序会在用户无需再次登录的情况下保持启动并运行,这是我们想要的,但由于敏感数据,我们可能希望在应用程序中验证用户身份的特定区域。

我看到通过让应用程序再次询问密码并执行 ResourceOwner 授权样式密码验证来执行此操作尚不受库支持。我不介意将现有的 popUpRedirect 与提示请求设置一起使用以强制登录。我坚持的是我没有看到上次用户登录的时间戳发生的任何地方(至少记录在案)。前任。如果用户在最后 5 分钟内登录,则可以访问敏感数据。

在所有人加入之前,我不是在寻找访问令牌时间戳或到期时间。我们的访问令牌在没有用户干预的情况下被静默刷新,所以这无济于事。我在寻找 IdToken 上的时间戳吗?图书馆是否公开了这一点?还是我在这个过程中都错了?提前致谢。

0 投票
1 回答
1035 浏览

progressive-web-apps - OIDC 和 PWA(添加到主屏幕)

更新:与独立 PWA 中断登录的问题基本相同,但在 iOS 上。

如果您将 Web 应用添加到主屏幕,Android 版 Chrome 会与浏览器中的同一域共享本地存储。您可以通过转到https://wilfrem.github.io/add_to_homescreen_test/然后添加到主屏幕并查看从主屏幕打开时是否具有相同的 ID 来测试这一点。(我做了 Nexus 5x)

如果你在 iOS Safari 中做同样的事情,你会得到一个新的 id。(我做了 iPod iOS 12.1.1)

oidc-client-js 库在本地存储中设置会话引用,然后在 Web 应用的登录回调中调用该引用。因此,如果您尝试从 iOS 上从主屏幕打开的 Web 应用程序登录,它会在 Safari 中打开 OP(oidc 提供程序),然后重定向回 Web 应用程序的 url,但在 Safari 中不是从主屏幕打开的 Web 应用程序,因此,由于您获得的本地存储不同:

在存储中找不到匹配的状态

如果本地存储不在同一个域中共享,您应该如何将 oidc 与从主屏幕 Web 应用程序打开的 iOS 一起使用?或者,当重定向回网络应用程序时,如何让 iOS 重新打开正确的窗口(从主屏幕打开的窗口)?或者如何让 iOS 在首先导航到 OP(oidc 提供程序)时永远不会离开全屏应用程序?

编辑:

这里有一个叙述来解释这个问题。

  • 打开my.app.com
  • 添加到主屏幕
  • 从主屏幕打开应用程序
  • 点击登录按钮
  • 登录按钮调用UserManager.signinRedirect()
  • UserManager.signinRedirect()来电OidcClient.createSigninRequest()
  • OidcClient.createSigninRequest()my.op.com 登录状态存储在本地存储中并导航以在 android 上my.op.com打开 Chrome 选项卡并在 iOS 上my.op.com打开 Safari
  • 在操作上完成登录过程
  • op重定向到my.app.com/signin-callback.html 这里是问题

在 androidmy.app.com/signin-callback.html上,在从主屏幕打开的应用程序中打开,在 iOS 上,它停留在 Safari 中。所以你得到:

在存储中找不到匹配的状态

我没有遇到错误,根据正在发生的错误完全可以预料,我只是不知道如何让 Safari 以一种可以与库一起使用的方式运行。

如果它相关,这是我的 manifest.json

add 也被删除scope,但在行为上没有任何变化。

更新:还尝试将 start 设置为完整域,而不仅仅是 relative /,仍然没有变化。

0 投票
1 回答
47 浏览

azure-active-directory - Azure Active Directory 隐式流 - 限制可以登录的用户

我已经为网络应用程序实现了 aad 隐式流程。我想限制可以登录网络应用程序的用户。我创建了一个用户组并将其添加到“用户和组”选项中。我启用了需要用户分配选项。问题是当我启用选项 Azure AD 登录屏幕要求我征得管理员同意时。所有范围都不需要管理员同意。

截屏

0 投票
1 回答
2469 浏览

identityserver4 - 使用 Identity Server 4、VueJS 和 oidc-client 检查会话失败后自动注销

我正在我的机器上测试服务器和客户端,我遇到以下情况:我很好地登录到客户端,做一些工作,关闭浏览器而不注销。然后我再次打开客户端,我仍然登录(预期)但一分钟后我自动注销(不预期)。

我正在使用这样配置的 oidc-client.js:

经过进一步调查,我看到客户端正在调用 /connect/checksession(返回状态 200)以支持单点注销,然后调用 /connect/authorize?client_id... 失败(302 重定向到 /home/error)。身份服务器日志显示“授权请求中没有用户”和“客户端的无效授权类型:隐式。我配置了混合和 client_credentials。我在这里阅读了一些内容,所以我将此代码添加到我的 IdentityServer 启动中:

但这似乎没有帮助。

大声思考,这可能是一个跨域问题,因为它们在不同的端口上运行,或者我没有正确设置 COR?我没有看到 cors 错误。checksession GET请求也应该有参数吗?我一直在阅读规范,它讨论的是 iframe,而不是网络流量,所以我不确定这个流量应该是什么样子。

更新:

我的应用程序的第一页是一个匿名身份验证登录页面,用于检查他们是否已登录。如果是,它将他们重定向到主页。检查的代码是这样的:

即使我打开一个新的浏览器,这似乎也恢复了。我什至将 Oidc.WebStorageStateStore 更改为使用默认值而不是 localStorage。

0 投票
1 回答
2054 浏览

reactjs - oidc-client jest.mock() 不允许引用任何超出范围的变量

我正在为使用 oidc-client 的身份验证服务设置一个测试类。

尝试模拟 oidc-client 的函数 signinRedirect 时,我遇到了提升问题,并引发了以下错误。我理解这个问题,但不知道如何解决它。

The module factory of ``jest.mock()`` is not allowed to reference any out-of-scope variables. Invalid variable access: myFunc