问题标签 [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 投票
0 回答
288 浏览

angular7 - Angular7 oidc 与 Identityserver4 的集成

我有一个带有 asp.net core 2.2 的 angular7 应用程序和一个用于身份验证和授权的身份服务器 4。我正在尝试使用混合或隐式授权类型来验证我们的角度应用程序。Asp.net 核心正在使用 startup.cs 中的以下代码引导我们的 angular7 应用程序

我希望用户应该重定向到身份服务器进行身份验证,并且在身份验证后我们的 Angular 应用程序应该打开。为此,我在 startup.cs 中添加了以下代码

但是此代码不会自动重定向,因为我没有在使用 [Authorize] 的 asp.net 核心中定义任何控制器和操作方法

因此,我尝试自动重定向,我在 Angular 的 AppModule 类中编写代码来检查用户登录状态(如果未登录),然后使用 oidc.client.js 使用以下代码将用户重定向到身份服务器。

它现在正在重定向到授权服务器,但我不确定这是否是好方法。

任何人都可以建议我们

0 投票
0 回答
733 浏览

reactjs - 如何刷新访问令牌?(react app + asp.net 身份服务器)

更改服务器上的用户数据时,我需要更改客户端上的令牌。例如,更改服务器上的一些数据后,我重新登录。我看到了这些更改,但是 Web 应用程序不会自动更新这些数据,也就是说,要使用它们,我需要退出应用程序并重新登录以接收新令牌。IdentityServer 4 的文档说令牌更新选项不适用于隐式流。但是可能有一些方法可以更新令牌(是否可以通过设置超时或其他方式来做到这一点)?

客户端的 IdentityServer4 设置:

React 中的用户管理器:

0 投票
0 回答
1764 浏览

angular - 手动调用signingSilent时发生oidc-client帧错误

有点奇怪。在我的 Angular 应用程序上,我有一种refreshUser方法可以在显示所有屏幕数据之前加载可能登录的用户。为此,我有以下ngOnInit方法:

refreshUser 方法具有以下代码:

在全新的导航上,这很顺利,我得到了错误:

(用户从未登录过)。

奇怪的情况是,如果我有已登录的用户,我关闭网络浏览器并再次打开它,屏幕挂起大约 10 秒,然后我收到另一个错误:

但是当屏幕加载并且我点击“登录”(因为用户不是)然后在加载组件之前触发“经典”AuthGuard,所以我运行标准startAuthentication()

可以快速登录用户。我的问题是:在登录用户方面,该功能和 signingSilent 功能有什么区别?因为它确实如此,但行为不是预期的,至少在时间和用户体验方面是这样。我希望能够“在可能的情况下让用户登录,但不提示登录屏幕”。那有意义吗?

谢谢!

0 投票
0 回答
258 浏览

angular - angular oidc - 调用signinRedirect时出错

也与最棒的社区一起检查!我在这里发布了我的问题 - https://github.com/IdentityModel/oidc-client-js/issues/910

任何人都可以帮助我吗?如果您需要更多信息,请告诉我:祈祷

0 投票
1 回答
1853 浏览

angular - 登录后重定向到原始 URL

我将 Identity Server 4 与 ASP.NET core 2.2、Angular 7 和OICD-Client.js 一起使用

在客户端应用程序上,我在尝试访问受保护的路由后被重定向到登录,例如:

登录后,我被重定向到 Angular SPA 应用程序的回调:

在 auth-callback 路由中,我完成了登录:

我怎样才能获得原始路线,例如,/protected-route并重定向到它?

如果有必要回答我留下我的配置:

身份服务器配置

身份服务器资源、ApiResources 和客户端

接口配置

Angular SPA 身份验证服务

0 投票
0 回答
291 浏览

asp.net-identity - 无需注销即可刷新用户声明然后登录

事情是如何设置的:

我有一个前端门户身份服务器

• 前端门户(角度)使用 oidc 客户端进行身份验证

• 当用户访问前端门户时,他会被重定向到身份服务器进行登录

• 成功验证后,我在身份服务器中设置声明,用户被重定向到带有 id_token 和 access_token 的前端门户

• 我可以使用 oidc 客户端的用户 (user.profile) 访问声明

问题/问题:

例如,如果我更新用户的名字,如何立即更新用户声明,以便最终用户可以立即看到他的更改?在这种情况下是注销然后登录是强制性的,还是无论如何我可以更新索赔?

OIDC 配置

• 在身份服务器中,我在登录成功后设置声明,并使用GetUserClaims方法

GetUserClaims方法的示例

并且“电子邮件”声明类型应位于“个人资料”身份资源的 UserClaims 数组中

我希望这有帮助!先感谢您 :)

0 投票
1 回答
1466 浏览

cross-domain - 如果第三方 cookie 被阻止,则使用 oidc-client 跨域进行静默续订

我们有两个 SPA 应用程序,它们与同一个 IdentityProvider 交互。我们实现了 oidc-client 并且 SSO 运行良好。现在我们认识到,如果第三方 cookie 被阻止,静默身份验证将不起作用,这是一个大问题。

默认情况下,Safari、Firefox 等浏览器已经阻止第三方 cookie。在 SPA 应用程序中执行 Session_Management 和 Access_Token 管理的推荐方法是什么。

我们不希望用户再次登录,如果 IdentityProvider 上的 Session 仍然处于活动状态(会话处于活动状态 14 天,具有滑动到期)。

我有哪些选择?

0 投票
1 回答
903 浏览

javascript - webpack build oidc-client 导致 Oidc.Usermanager 不是构造函数

我有一个 angularjs 应用程序,其中我有 oidc-client 工作。当我从 Visual Studio 启动我的 angularjs 应用程序时。我对 oidc-client 没有任何问题。一切正常。但是当我使用 Webpack 捆绑它时,它给了我一个奇怪的错误,说 Oidc.Usermanager 不是构造函数......

我在 Visual Studio .net 核心上运行一个混合 angularjs/angular 应用程序。我像这样使用 WebpackDevMiddleware

我对 oidc-client 有以下 webpack 配置。我使用版本 1.9.0

这是给出错误的 oidc-client 代码

这是我得到的错误

没有 webpack,一切都很好。我错过了什么?

0 投票
1 回答
3809 浏览

angular - 调用signinRedirect时的Oidc-client无限循环

我将 Angular 8 与 oidc-client-js 一起使用。我已连接到 IdentityServer4(代码流 + PKCE)。打开应用程序(在主组件内部)后,我想检查用户是否已通过身份验证。这就是我调用signinRedirect() 的原因。我没有手动单击按钮,而是在构造函数中调用它(当我只是单击按钮调用 signinRedirect() 时,整个流程工作)。问题是我被困在无限循环中。Angular 不断调用 IdenityServer 并刷新登录页面。对服务器的 api 调用(并因此重定向到登录页面)工作正常,但不会停止。请帮忙。

用户输入 Angular 应用程序。然后我调用授权端点(signinRedirect,发送代码流中所需的服务器内容) - 如果用户登录,服务器会检查 cookie。如果没有,它会将我重定向到登录页面。问题是,如果我单击一个调用 (signinRedirect) 的按钮,但当我在打开组件时执行它时,该场景将起作用。循环以日志结束 - 显示登录:用户未通过身份验证。循环以 Request started HTTP/1.1 GET http://localhost:5555/.well-known/openid-configuration开始。然后 - 请求开始 HTTP/1.1 GEThttp://localhost:5555/connect/authorize?response_type=code&client_id=ng&state=kYkvO3CO4SW3asopth-dmZW8SYkuyz79Npfn0K4MPAMCT&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Fcallback&scope=openid%20API&code_challenge=2iGwqANCfZGshjmhDmmwm4Eh4Q8SowgPcImf1-CsDzs&code_challenge_method=S256&nonce=kYkvO3CO4SW3asopth-dmZW8SYkuyz79Npfn0K4MPAMCT . 然后它重复。

0 投票
1 回答
3462 浏览

angular - 在 Angular 中使用 IdentityServer4 + oidc-client-js 在空闲时注销用户

在我的应用程序上,我有一个超时功能,所以当用户空闲 X 分钟时,我想从 Identity Server 注销。

我的第一次尝试是手动创建呼叫,而无需用户导航到 Logout 控制器。

这段代码看起来像这样(Angular + TS):

我可以看到它使用 id_token_hint 和正确的 redirect_url 进入 endsession 端点,但是当我尝试重新登录应用程序时,它给了我一个令牌,而没有再次询问我的凭据,这违背了它的目的。

oidc-client-js 库中的常规注销功能可以正常工作。

唯一需要注意的是,我想向用户提供其他信息,说明他们由于不活动而超时,我不知道怎么做。

此函数接受 apost_logout_redirect_uri和 astate作为参数,但我无法成功地在我的 IdentityServer 上获取它们(我还是 .Net 的新手)。

这是错误的方法吗?我是否应该使用 /timeout 路由之类的方式将用户导航回我的 Angular 应用程序以显示此消息?

感谢您的输入