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

openiddict - 响应类型无效

我正在使用 openidict 和 oidc-client 身份验证,

在这里,当响应类型设置为“代码 id/代码 id_token/代码令牌”时,我得到 Open ID connect hybrid flow is not supported 错误。

当它是 "code" 时,我收到以下错误。

有人可以帮我吗?

0 投票
1 回答
76 浏览

oauth-2.0 - 在 authcode 授权类型实现上是否默认使用 pkce 的授权代码?

我们正在使用 oidc 客户端。客户端设置授权类型为授权码。但是,我发现我的授权代码使用了 PKCE。因为我可以在没有客户端密码的情况下使用它,并且 uri 上有 code_challenge。我正在查看它是如何设置的,但我找不到它。

我只是想知道带有 PKCE 的 AuthCode 现在是否是默认的。如果我错了,请纠正我,当您没有在您的 oidc-client 中设置您将使用 PKCE 时,您应该使用需要客户端密码的普通身份验证代码吗?

这是我的客户:

}

0 投票
1 回答
266 浏览

angular - angular+oidc-client:getUser() 总是返回 null

我在我的角度项目中使用 oidc-client。如果用户对象不为空,我在 app.component.ts 中编写了以下代码以将用户重定向到主页。但是即使成功登录,用户对象也始终为空。我正在使用 microsoft azure 进行身份验证。

app.component.ts

身份验证服务.ts

成功登录后,我在名为 oidc.user.xxxxxxx 的本地/会话存储中看不到任何 key:val 对。

此外,我还对一些示例内部应用程序进行了交叉检查。成功登录后,oidc api 将触发对令牌端点的调用。在我的情况下,这个端点没有被调用。

可能缺少什么?我究竟做错了什么?

0 投票
0 回答
471 浏览

angular - Angular中带有oidc-client的IdentityServer4:调用`signinRedirectCallback`时控制台中的login_required错误

我在 Angular 项目中使用 ASP.NET Core IdentityServer4 作为 IdP 和 oidc-client 库来集成 id 服务。但是,用户登录后,在 Web 浏览器控制台中出现了两次以下错误:

我的 ASP.NET Core IdentityServer4 具有以下客户端配置:

在我的 Angular 前端应用程序中,我创建了以下内容AuthService

由于我将 redirect_uri 配置为在 route 下auth-callback,因此我创建了以下AuthCallback组件:

当然,我将它放入路由配置中,以便auth-callback可以重定向到AuthCallbackComponent

最后,我AuthService在我的一个应用程序组件中使用了:

在上面的代码中,当authService.completeAuthentication()被调用时AuthCallbackComponent,它会调用该signinRedirectCallback方法,这就是报错的地方。我只是尝试了几种方法来优化代码流,但看起来都没有奏效。我错过了什么吗?有人可以帮忙吗?

提前致谢!

0 投票
0 回答
79 浏览

angular - Angular oidc 客户端页面重新加载

我在oidc-client带有 Identity Server 4 的 Angular 10 应用程序中使用 npm 包。

我发现当我在浏览器中重新加载网页时,它总是重定向到主页并且不记得当前的角度路线。

我发现这是因为当页面重新加载时UserManager尝试刷新用户对象,但这是异步完成的,因此因为它还没有加载所以AuthGuard看到。nulluser

这个可以修吗。如何?

似乎无法更改isAuthenticated(): boolean为,isAuthenticated(): Observable<boolean>因为它需要在AuthGuard必须canActivate返回的地方boolean而不是必须返回的地方Observable<boolean> ,因此有必要摆脱Observable.

0 投票
0 回答
44 浏览

angular - 绕过 oidc-client 中的颁发者检查

我们使用 Angular 7 作为前端,使用 .NET Core 3.1 作为后端。对于身份验证,我们在 Angular 上使用 IdentityServer 4 和 oidc-client。

我们需要绕过对 oidc-client 的发行人检查。UserManagerSettings 中有一个名为 userInfoJwtIssuer 的字符串属性,它有 3 种可能性:'ANY'、'OP' 或其他。通过阅读源代码,似乎通过设置'ANY',它应该绕过发行者检查,但没有发生,我们仍然收到来自令牌的发行者与发行者设置不匹配的错误。这是一个oidc客户端的配置

您对如何让 oidc-client 绕过发行人检查有任何想法吗?

0 投票
1 回答
76 浏览

azure-ad-b2c - 是否可以在 IdentityModel.OidcClient 中获取 code_verifier?

IdentityModel.OidcClient使用已生成的 code_challenge 发送请求。我正在测试邮递员的流程以在获取身份验证代码后获取令牌,但我需要 code_verifier,是否可以获得用于生成 code_challenge 的 code_verifier oidcclient?

谢谢

0 投票
0 回答
219 浏览

c# - 如何使用 IdentityModel.OidcClient 通过 refresh_token 获取 LoginResult?

我使用 IdentityModel.OidcClient 来获取 access_token。在浏览器中登录后,我调用 OidcClient.ProcessResponseAsync() 以使用 RefreshTokenHandler(以及令牌、时间戳、用户/声明)获取 LoginResult。现在我使用 RefreshTokenHandler 创建一个 HttpClient 来调用我的 WebApis。

每次 access_token 过期时,WebApis 都会返回 HTTP 状态 401(未授权)。RefreshTokenHandler 使用 refresh_token 创建一个新的 access_token 并重复请求。到目前为止一切正常。

现在我坚持 refresh_token,重新启动我的应用程序,并希望使用 refresh_token 获得一个干净的 LoginResult 和 RefreshTokenHandler(以及令牌、时间戳、用户/声明)来创建一个 HttpClient。

我怎样才能做到这一点?有没有办法不分叉 IdentityModel.OidcClient。

0 投票
0 回答
271 浏览

angular - Angular + Azure:由于最长生命周期,刷新令牌已过期

我们的刷新令牌最大生命周期设置为 24 小时。在 24 小时不活动后,应要求用户再次登录其 Microsoft 帐户。

在 oidc 设置中,我们将 automaticSilentRenew 属性设置为 true。token每 1 小时自动向端点发送一个请求。

端点因 400 错误请求而token失败,24 小时后响应如下

因此,在 24 小时后,如果由于任何用户活动而调用端点,我们的服务器将发送未经授权的 401,并且在我们的 catch 块中,我们编写了代码以将用户重定向到 Microsoft 登录页面。

相反,如果端点返回带有 invalid_grant 的 400 错误请求,是否有办法拦截令牌端点并自动将用户重定向到 Microsoft 登录屏幕。

0 投票
0 回答
135 浏览

react-hooks - oidc-client + React Hooks 无限循环

我一直在尝试调整react-openidconnect 以消除单击的需要,因为我需要应用程序在未经身份验证时自动重定向到身份服务器。

但无论我尝试什么,我总是以无限循环的重定向告​​终。我尝试将组件重构为无状态函数,但它不断被重新渲染。

由于原始组件总是在一段时间内呈现 NotAuthenticated 元素,到目前为止我发现的唯一解决方法是设置超时以模拟给定时间后的点击,但我简直不敢相信这个可怕的解决方案是只有一个。

我对 React 很陌生,所以有人能提出解决方案吗?

(我也尝试简单地从 node_modules src 文件夹中复制相同的代码,不添加任何内容,作为添加逻辑的起点,但无限循环又出现了)