问题标签 [oidc-client]
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.
angular - SigninRedirectCallback 期间的 OIDC 客户端编码 URL
我正在使用外部身份服务器构建应用程序。登录工作正常,只有当被发送回 signin-oidc 页面时才会发生奇怪的事情。
我正在使用 HashLocationStrategy 所以 URL 看起来像这样。
但是在加载此页面几秒钟后,似乎 URL 在第一个 # 之后被编码,这使得它看起来像这样:
这会导致我的应用重定向到 404 页面。
登录重定向回调函数如下所示:
它没有达到路由器导航功能,所以这不是问题。有人可以帮我解决这个问题吗?
angular - Auth0 with Angular and Oidc-client
I have created a new Angular application and I'm working on login with Auth0 but I encountered an issue with oidc-client by getting this error:
In my auth.module I have this configuration:
and here is my environment file:
I'm more than sure there is a problem with userStore but I can't find a solution to fix it.
My oidc version:
angular - 使用 HashLocationStrategy 时,Angular 应用程序在 OAuth2 登录后无法重定向
我正在开发一个现有的、生产中的 Angular 7 应用程序。我的任务是从本地身份验证方案迁移到现有的公司范围内的身份提供者。身份提供者符合 OAuth2。我正在使用 oidc-client 库来尝试完成此操作。
Angular 应用程序正在使用 HashLocationStrategy,我相当肯定这个要求不会改变。我不是这个应用程序的原作者,所以我不知道选择 HashLocationStrategy 而不是默认 PathLocationStrategy 的确切原因。现在,我宁愿不去更改为 PathLocationStrategy 的兔子洞。我可能会要求更多的麻烦。
身份提供者不允许在重定向 URI 中使用哈希字符,如 OAuth 2.0 规范中所述:https ://www.rfc-editor.org/rfc/rfc6749#section-3.1.2 (“端点 URI不得包括一个片段组件。”)。
对于开发,我希望成功登录后的重定向URI为“http://localhost:8080/#/dashboard”,但由于上述限制,我不能这样做。拥有身份提供者 API 的开发人员告诉我在重定向 URI 中编码哈希字符,例如:“http://localhost:8080/%23/dashboard”。我已经尝试过了,但是当我的应用程序遇到重定向时,它不会对其进行解码,因此我收到此错误:
无法获取 /%23/仪表板
从身份提供者返回到应用程序的登录后重定向 URL 如下所示:
http://localhost:8080/%23/dashboard?code=7d25a8af920d219631a15019fc243ca2&state=9821f4153a1b45d3b6ed9a6813bd70c9&session_state=5c59c99f31156aa805b7267f82b0aa8e499d3f81cf5caab0335595c6e397bbf8.8_QJpOLj75eOfarD091Snw
我的 authservice 的登录功能如下所示,为了调用登录页面:
我的问题是:在尝试路由之前,我可以在 Angular 应用程序中监听一个事件来捕获和解码登录后重定向 URL 吗?如果是这样,我可以将 %23 转换为 # 并继续重定向。
或者,有没有办法可以暂时暂停对这条路线使用 HashLocationStrategy ?如果这是可能的,我也许可以使用“http://localhost:8080/dashboard”作为我的重定向 URI,并且仍然让它路由到正确的组件。
我一直在网上寻找,但到目前为止,我看到的所有 Angular 示例都使用 PathLocationStrategy 而不是 HashLocationStrategy。
我也在这里搜索过,没有发现和我一模一样的问题。所以我不认为这是一个重复的问题。
感谢您的任何建议。
更新:不管怎样,我永远无法解决这个问题,除非将应用程序从使用 HashLocationStrategy 更改为使用 PathLocationStrategy。所以,这就是我所做的。我对我们的源代码控制进行了更多研究,发现了对 HashLocationStrategy 进行更改的人员和时间,基于此,我猜测原作者没有意识到 Web 服务器上的某些配置是支持 PathLocationStrategy 所必需的,这(希望)是他选择使用 HashLocationStrategy 的唯一原因。我们将 webpack dev-server 用于我们的开发(localhost)Web 服务器,因此将“historyApiFallback: true”添加到 webpack.config.js 以支持重新加载相同的 URL 是一件相对简单的事情。当我可以访问使用 nginx 的登台和生产服务器时,
identityserver4 - Oidc 客户端 js,不要在客户端使用 Date.now
我在我的客户端中使用oidc-client-js进行我的一个 SPA 项目。我有一个用 IdentityServer4 编写的身份服务器。
如果我手动更改服务器的日期时间,则oidc-client-js无法验证登录用户中服务器的响应,因为日期时间不一样。
而且,如果我手动更改客户端的日期时间并使用自动日期时间选项保留服务器,来自服务器的响应再次无效。
我认为任何使用日期时间的 JavaScript 解决方案都不可靠,所有日期时间都必须在服务器中验证。
如何在服务器而不是客户端验证令牌?
我的假设是否正确?如果它不正确,oidc-client-js是否有任何解决方案可以使用服务器时间而不是浏览器时间?
这是我的客户端配置
reactjs - 使用 .net 核心反应模板修改 oidc-client 的登录/登录 UI
使用带有.net core 3.1的vscode或VS2019,我创建了带有身份验证个人的新项目
使用此命令dotnet new react --auth Individual
需要更改登录屏幕 UI 我找不到登录组件 UI 的任何 UI
有什么方法可以更改或修改登录、注册或用户个人资料 UI 吗?
c# - 带有 C# Windows 窗体的 OAuth2 隐式流
我正在开发需要使用隐式流进行身份验证的 ac# windows 窗体应用程序(客户端不接受另一个流)。根据要求,我需要打开默认系统浏览器进行身份验证(因此应用程序上没有嵌入式 Web 视图)
我正在尝试使用OidcClient C#和示例,但我无法让它工作。
我得到的最接近的是使用ConsoleSystemBrowser
. 但是使用下面的代码我总是得到一个UnknownError
with empty response
。
我可以在浏览器中看到 id_token: http://127.0.0.1:54423/auth/signin-oidc#id_token=XXX
。我该如何阅读它?
angular - 登录 oidc-client 后停留在同一页面
我正在使用 Angular 9 开发我的第一个带有 SPA 的 ASP.NET Core Web 应用程序。这是我第一次使用 Angular,我一直在学习 Pluralsight 中的教程。但是我在登录后一直停留在同一页面上时遇到了困难。我正在为我的 Angular 位使用 IdentityServer4、ASP.NET Identity 和 oidc-client。
所以,我在“ https://localhost:44392/ ”启动应用程序。所以,最初,这很好。例如,当我转到“ https://localhost:44392/search ”时,就会出现问题。如果我通过具有 [routerLink]="['/search']" 的导航栏,则没有问题。但是,如果我只是在浏览器的地址栏中写“ https://localhost:44392/search ”,它会触发另一个登录(虽然我的 id_token 通常仍然有效,但它不会要求提供凭据)。但是在签名之后它会回到主页(又名“ https://localhost:44392/ ”)。
此行为仅在添加 oidc-client 和 guardService 后才开始。我尝试在网上搜索,但我认为我遗漏了一些东西,因为我无法使事情与指控的答案一起工作。
所以这是我的课
app.module.ts
最后是我的 environment.ts
我怀疑问题出在警卫身上,但我想我只是知道的不够多,无法更好地了解。非常感谢任何见解。
谢谢
更新:
所以,我终于发现是什么导致了重定向。正是this.router.navigate(['./']);
signin-oidc.component.ts 中的这一行,但我不知道该放什么以使其转到触发登录的 URL。
请记住,这只发生在我直接在浏览器的地址栏中写一个 url 时,当我在我的应用程序中使用导航栏时不会发生这种情况。关于如何解决这个问题的任何想法?我尝试编写this.router.navigate([this.location.back()]);
,但这会使用 signin-oidc 创建一个循环,而不是将我发送到触发登录的页面(例如https://localhost:44392/search)
reactjs - 反应 oidc-client 令牌超时登录静默错误
我按照这里的指南来实现 oidc-client 与反应:https ://medium.com/@franciscopa91/how-to-implement-oidc-authentication-with-react-context-api-and-react-router-205e13f2d49
我让它工作正常。但是一旦我让网站闲置了几个小时,我在控制台日志中注意到了这一点:
我不确定我为什么会得到这个,但我知道它发生在 authService.js 文件(来自文章)的以下片段中的某个地方:
有没有其他人遇到过这个问题或知道如何正确实现 asigninSilent()
以正常工作并在超时时重新获取新令牌?
我希望这是足够的信息,我不能再展示了。
angular - OidcClient.readSigninResponseState:在存储中找不到匹配的状态 - oidc-client-js (Angular)
我正在使用oidc-client 库在我的 Angular(9) 应用程序中与 Azure AD 集成。signinRedirect()
&signinSilent()
功能按预期工作。但是对于signinPopup()
,它在浏览器 url 片段中成功获取了访问令牌,但它抛出了下面提到的错误:
app.component.ts:83 错误:在 oidc-client.min.js:1 的存储中找不到匹配的状态
令人惊讶的是,在 signin-callback.html 中,当我将 response_type 作为 query 传递时var userManager = new Oidc.UserManager({response_mode: "query"});
,登录弹出窗口成功但登录重定向失败并抱怨
错误:无响应状态
我最初是关注这篇文章的。
这是我的服务代码:
OIDC 设置:
登录回调.html
静默刷新回调.html
angular - 从 IdentityServer Angular oidc-client 获取客户端配置
我有 Angular 应用程序作为客户端,我使用 oidc-client 库来提供 OpenId Connect 协议。目前,客户端设置只是一个常数。是否有人知道如何使用 http-get 请求从服务器获取客户端配置?
当我尝试在构造函数中执行此操作时,我遇到了循环依赖错误,或者可能有一些技巧......我不知道......