问题标签 [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.

0 投票
1 回答
87 浏览

auth0 - 将 Auth0 与 oidc-client 和 PKCE 一起使用

我将Auth0oidc-client (latest 1.10.1)一起使用。

现在我要做的是使用 PKCE 流而不是隐式流,在AuthModule中我有以下oidc配置:

我不得不将response_type值从id_token toke更改为code

我读到的另一件事需要更改的是静态页面:

我知道我需要为Oidc.UserManager config添加response_mode: 'query'

现在一切都很好,但我认为我错过了一些东西,因为我被无限重定向了。

我需要在 Auth0 应用程序中进行一些额外的设置吗?

0 投票
0 回答
110 浏览

angular - Angular Guard - 手动提供 url 时,oidc-client 返回空用户

我的 Angular 11 应用程序使用带有隐式流的 oidc-client 。我用警卫保护了我的一条路线(应该只对经过身份验证的用户可用)。当我使用应用程序中的链接导航到受限区域(比如说 http://localhost:4200/restricted-area/)时,它工作得很好。然而,问题是当我尝试“手动”导航到那个页面时(例如在我的浏览器中输入 url),应用程序将我视为没有经过身份验证。当我在“正确”导航后简单地刷新页面时,也会出现同样的问题。有趣的是,在这两种情况下,在重定向到主页后,我都会再次登录。

作为一种解决方法,我正在考虑在 [canActivate] 方法的开头实现从会话存储中额外手动提取令牌,但我希望有更好的方法来解决这个问题。

AuthGuard 实现:

AuthService 实现如下所示:

路由(应用程序):

路由(父模块):

0 投票
1 回答
256 浏览

c# - IdentityServer4 示例代码给出未授权客户端错误

我正在尝试学习 Identitymodel.OidcClient 包,并通过测试提供的示例之一开始:ConsoleSystemBrowser 示例。这是一个非常简单的示例,我希望它从一开始就为我提供一个完全配置且有效的示例。但是,当我按原样运行示例时,我收到了这个未经授权的客户端 - 未知客户端或客户端未启用错误。

错误截图

我已将 Serilog 配置为检查日志,但我无法从日志中弥补任何告诉我为什么会收到此错误的内容。谁能帮我找出问题所在?

这是日志:

0 投票
1 回答
209 浏览

reactjs - oidc-client.min.js 中的意外令牌“else”导致 Azure AD 登录后 React 应用程序刷新

所以我在反应应用程序上使用 oidc-client 让我的用户 SSO 到 Azure AD。一切正常...

...除了,大约每隔 X 分钟左右,页面就会在控制台中刷新一次(X 似乎在 30 到 60 分钟之间)。

在此处输入图像描述

这是上图中的错误文本:

这是我在silent-refresh.html 中的内容:

我刚刚得到了一个 oidc-client.min.js 文件,它位于我从这里得到的旁边。

我试过的

  • 移除了 Redux 开发工具
  • 移除了 React 开发工具
  • 更改了accessTokenExpiringNotificationTime传递给 UserManager() 的属性
    • 当前设置为 600(10 分钟)。当我将其更改为 60(1 分钟)时,没有区别。刷新仍然发生在同一时间范围内。当我将其更改为 3600 或 7200(1 或 2 小时)时,错误和刷新会立即发生。
0 投票
0 回答
494 浏览

c# - IdentityModel.OidcClient RefreshTokenDelegatingHander

我正在尝试使用RefreshTokenDelegatingHander ,但无法使用 Xamarin.forms 找到任何合适的方法或示例。有人成功了吗?这是我尝试过的:

在我的登录方法之后:

我正在尝试将其与以下内容一起使用:

任何人有任何想法?或任何例子?

0 投票
1 回答
1667 浏览

reactjs - Asp.Net Core Web Api 和 ReactJS:使用没有身份的外部登录提供程序进行身份验证

在 ReactJS 和 Asp.Net Core Web API 项目中使用 OAuth 登录提供程序是否有一种清晰而简单的方法?我正在寻找没有身份和剃刀页面的解决方案。只有 ReactJS 和 Asp.Net Core Web API。我们需要 oidc-client 库吗?

0 投票
1 回答
552 浏览

angular - 登录重定向上的 Oidc-client identityserver 无限循环 Angular 10 应用程序

我在 localhost:4200 上运行了一个 Angular 10 应用程序。在我的 app-routing.module.ts 中,我已经配置了加载 AdminComponent 的根路径,所以如果你点击 localhost:4200,它会尝试加载 AdminComponent,但在加载之前;我有一个 authguardservice 来检查用户是否登录,如果没有;它将用户重定向到身份服务器(他在其中获取登录屏幕以获取令牌)。

我无法控制身份服务器提供商,它由另一家公司托管

通过代码流和 PKCE 连接到 IdentityServer4。

我对这个问题进行了一些研究,很多人都面临同样的问题。但是我找不到适合我的解决方案。可能是因为我是 Angular 和 oidc 的新手?

https://github.com/damienbod/angular-auth-oidc-client/issues/180

https://github.com/damienbod/angular-auth-oidc-client/issues/829

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

这是我的设置

应用程序路由.module.ts

auth-guard.service.ts

auth.service.ts

当我在 localhost:4200 上运行应用程序时,我立即被重定向到身份服务器,这很好。输入电子邮件和密码,然后身份服务器重定向到 signin-callback.html 页面

身份服务器登录页面

用户对象有一个 id_token 值,您可以在下面的截图中看到。这也很好 登录重定向

在开发人员工具的网络选项卡中,我可以在响应部分看到令牌,请参阅下面的截图。所以到目前为止一切都很好 代币网络

同样在我的 auth.service.ts 构造函数中,身份服务器用户被分配给属性用户。

身份验证服务.ts

这里的问题: 在身份服务器进行身份验证并将用户发回给我们之后,signin-callback.html 页面然后路由到“/admin”,在这里,authguardservice 再次运行并尝试通过调用isLoggedIn()方法检查用户是否登录的 authservice 。(如下所示) 身份验证服务

该方法唯一要做的isLoggedIn()就是检查user对象是否为空。令我惊讶的是它是 null :( 即使我们最近在 authservice 的构造函数中设置了它的值

问题

然后这导致了我们著名的无限循环(KMN)。您也可以建议一个链接,因为很多人都遇到过这个问题,如果该链接对我有用,我会告诉您

0 投票
0 回答
140 浏览

angular - 在与 IDP 不同的机器上运行时,Angular 应用程序登录重定向失败并出现“invalid_grant”错误

我正在使用 oidc-client 和 Angular 来登录我的身份服务器。在同一台机器上运行这两个应用程序时,一切正常。

但是,当我在 Web 应用程序服务器上运行我的身份服务器并在静态 Web 应用程序上运行我的 Angular 应用程序时,我收到一个错误“invalid_grant”。

问题描述

  1. 用户单击登录按钮并被重定向到身份服务器的登录屏幕

  2. 用户输入密码和用户名,然后单击登录

  3. 身份服务器重定向到“登录回调”链接,我得到空白登录回调页面,因为登录回调只是一个 .ts 脚本

    This URL appears in the header: https://white-wave-0ca3e8803.azurestaticapps.net/signin-callback?code=l5-p3B5IGifAZ3ijIUgKmLl7aL2g45Fh5JLmluOj3NA&scope=openid%20profile&state=6503e1f5f176411a890ac50a4d0ecb84&session_state=aPnjQ5ZUiMCDKkAztm0O0K4quSkfSlWRZd--YuK73Oc.NVxBA5K6RH5_ptpDobxmxA

    在网络下,我们有一个红色的“令牌”错误。包含响应头
    HTTP/1.1 400 错误请求
    缓存控制:无存储,无缓存,最大年龄 = 0
    编译指示:无缓存
    内容长度:25
    内容类型:应用程序/json;charset=UTF-8
    服务器:Microsoft-IIS/10.0
    Strict-Transport-Security:max-age=2592000
    Access-Control-Allow-Origin:https : //white-wave-0ca3e8803.azurestaticapps.net/dashboard X-Powered-作者:ASP.NET
    设置 Cookie:ARRAffinity=1fa22e5e18dd42b9d22d6c2c620b562f117da68736f4d32b741538a2d054d95c;Path=/;HttpOnly;Secure;Domain=hansecoreidp-staging.azurewebsites.net
    设置 Cookie:ARRAffinitySameSite=1fa22e5e18dd42b9d22d6c2c620b562f117da68736f4d32b741538a2d054d95c;Path=/;HttpOnly;SameSite=None;Secure;Domain=hansecoreidp-staging.azurewebsites.net
    日期:周四,2021 年 3 月 18 日 8 月 34 日格林威治标准时间:

    错误消息
    {"error":"invalid_grant"}

  4. 当我刷新时,我收到错误错误:未捕获(承诺中):错误:在本地存储、会话存储和 cookie 的存储中未找到匹配状态为空。

  5. 当我删除我的基本 URL https://white-wave-0ca3e8803.azurestaticapps.net之后的所有内容时,导航到基本 URL 并再次单击登录,登录有效并且在存储中我突然有了 Cookie Storage A cookie包含来自身份服务器会话存储的 AAR Affinity 等 我有access_token、id_token、配置文件、范围等。 本地存储 权限、client_id 等。

假设
我认为 Angular 应用程序无法将来自登录回调的信息存储在应用程序存储中。

身份服务器配置代码

角度 OIDC 客户端身份验证配置代码

}

登录重定向回调代码 用户管理器是从oidc-client继承的类。调试代码时没有输入 .then ,我无法在此处进一步调试。但我认为这之后发生的任何事情都是代码失败的地方。

}

登录回拨码

网络图片 网络流量失败

如果我的问题中缺少任何内容,请告诉我。

环境文件

0 投票
1 回答
99 浏览

winforms - SSO 不适用于 IdentityModel.OidcClient

我正在将 OIDC 登录添加到 WinForms 应用程序。我使用 IdentityModel.OidcClient 库设置了应用程序,并从他们的 WinForm 示例中提取了样板代码。OIDC 成功显示登录表单,执行 MFA,然后我取回令牌。

但是,如果我关闭应用程序并再次打开它,我必须再次进行身份验证。通常,浏览器中的 SSO 会话允许我绕过这一步。似乎 OidcClient 正在使用一个浏览器会话,该会话在应用程序关闭时被破坏并且不在应用程序之间共享。

如何配置我的应用程序以使用 SystemBrowser 或其他浏览器,这些浏览器将在执行之间和/或为使用此组件的不同应用程序维护这些 SSO cookie。

提前致谢。

0 投票
1 回答
280 浏览

c# - 如何在 ac# webapi 中使用 IdentityModel.OidcClient 来验证和验证从支持 openid 连接的活动目录服务生成的令牌?

我有一个 c# 中的 webapi 和一个前端 Angular 应用程序。Angular 应用程序正在调用活动目录服务(例如 azure ad)以获取访问令牌。在随后的 webapi 调用中,web api 应用程序需要验证访问令牌。

到目前为止,我的 webapi 一直在使用 Microsoft.Owin.Security jwt 令牌验证。我想用 IdentityModel.OidcClient 替换 Microsoft.Owin.Security (因为这是经过认证的 c# openid 连接库)。请帮助我了解如何使用 OidcClient 框架来验证令牌。