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

angular - IdentityServer 外部身份验证提供程序 - 身份验证回调 - 重定向 - 400 错误请求

我正在关注 https://www.scottbrady91.com/Angular/SPA-Authentiction-using-OpenID-Connect-Angular-CLI-and-oidc-clienthttps://www.scottbrady91.com/Angular/Migrating-oidc -client-js-to-use-the-OpenID-Connect-Authorization-Code-Flow-and- PKCE 在 SPA(Angular)中实现 OIDC

我正在使用 aspboilerplate 集成 IdentityServer

我已经按照上述文章设置了所有内容,并且能够导航到外部身份验证提供程序,并且还能够输入所需的凭据。

在重定向到 Angular 时,我收到 400 - 错误请求。这是详细信息

回调网址:

Cookies : 请求发送 9095 字节的 Cookie 数据:

身份服务器配置:

角度配置:

请让我知道可能出了什么问题

编辑:到目前为止我发现的是

  1. 即使使用另一个 Angular oidc 客户端angular-auth-oidc-client,我也陷入了同样的错误
  2. 使用 JS 客户端(https://github.com/IdentityServer/IdentityServer4/tree/master/samples/Quickstarts/6_JavaScriptClient),它按预期工作。但由于我们有 Angular 作为前端,我通过包含所需的 JS 库在 Angular 中实现了 JS 示例,令我惊讶的是,我面临同样的问题
  3. 当我复制 URL 并粘贴到另一个浏览器中时,call-back会调用该组件。所以看起来 Header & Cookie 有问题。这是我从 Fiddler 收到的请求的完整数据

    GET http://localhost:4200/call-back?code=7bc6c3d343067f2ede3ed86268e3622bb909cb8df5d75d2f223b335bd75b730c&scope=openid%20profile%20api1&state=86215491d41a4c3c83d52007edf372cd&session_state=ibjjr0YMpGp_UZ1ezmUMusoAIpht25ySKfq8hoCKHXQ.e7f8f959a82f09b830a9635911c0b9f3 HTTP/1.1

    主机:localhost:4200 连接:keep-alive 升级-不安全请求:1 用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36 Sec-Fetch-Mode: 导航接受: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng, / ;q=0.8,application/signed-exchange;v=b3 Sec-Fetch-Site: none 接受编码: gzip, deflate, br Accept-Language: en-US,en;q=0.9

    Cookie: .AspNetCore.Antiforgery.xkdte50z5pg=CfDJ8FAKJpEizERFtUzdjBClgcvmHhFjLJ4WDhku77bzpIxGI20-YRukepOXg6hGG4AUWzSGKXSWmy0Ie9tQFsXnWx0sUUlh0EAOij8y18d_96_-FVyCrPhtQ0JRtEXvhPXLxqum0sIJmwFD1116QRU-E5A; idsrv.external=chunks-2;idsrv。MKJYCXZt6vpbZtRl9Qp5K2x2N5V3ChOe1Qpwb40FjU4_UhbkBbiqr5N2R_RfGS8JH5hDDn09LEZojC6YHq_YCc0B8QwlFfiThYCE1QvHpAUJ-Yk1HDVJ2tNW_y04CXwMheBCMB90c2SmyLY6w59G8vKOLk-CHrn7dfL6uaECsNcdieFB_pb3N66tjGd38-dS3DCULT7xZMAxhdZoBgrmehUX2F3dvP6t9snKXc8QrUUkeogFzOpVOCdJKUMwsZLgJjXMfq_psFc3gtbQEGi_n7nH-kHkigntSgaieblXuVzqV0UGCJr3pcEsCt5I2kWGZmUiUhEOLLBApK2vvDl8WgOkGmyIQmVEUa-UDp5XoJeZ8n-8ZVlPbFUg4CFuvCBserjD1b-WTOYgam1ufRRImo0OlsAVDNkZBsc-3SJ-jMhwhukhnE4AycHlB3o5inVRUWvjWckrTetL3d5ivj6rwI6sLQEZXnpBIwDZDTbMnCNFuaMaPT3q1l1MxSRncvF4xolSQraCjjAdpLVtfNM1bBC_1c_3a0z97OlhDFOM9sppnCqWIXdwcNKdj1B4dVdMUescRrVgy; idsrv。yC8nnCe_icrNO1W_boKRaJJ9EOVa8iHJIRo1QxSGsbYMHV-Fghng-7klfIZWcsuMgx_YJEmTS7clsFKG4kjVEjxQ9VOcVzjjtx4sfuelkEuqdr7cMwbJneRwoiLsIGVPMxSZphdgHb_mn3Hm6Nbb07EibbRIl-Y96fPZCqDGhq1R6DONprDwXJ305kvEspHeQayWiwXOoGg6XQJNtMf9aBrPc3ocQWvTjoRQj6GmpqyEXODhVYuePHiEmqh8XAVdLuIEFra6INZYmev4h8eWMKX3cle2WivccXEe3e5X175Vg1Yi23uw7lOu5o0_-G68; idsrv.session=5d538478b846f725df5730950f1b193e;.AspNetCore.Identity。

    HTTP/1.1 400 错误请求连接:关闭

这是我在浏览器中看到的

在此处输入图像描述

0 投票
1 回答
5125 浏览

angular - 尝试重定向到 Azure AD 进行身份验证时遇到 CORS 策略问题

我收到此错误:

Access to XMLHttpRequest at 'https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/authorize/.well-known/openid-configuration' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

尝试重定向到 azure 进行登录时。

这是服务:

}

我确定我正确注册了我的localhost网址。然而,我得到了那个错误。到目前为止,我没有看到任何处理该问题的文档。

感谢您的帮助

在此处输入图像描述

0 投票
0 回答
1155 浏览

angular - 在角度 7 中处理过期令牌的静默更新 - oidc 代码流?

如何在使用 oidc 代码流的角度应用程序中处理访问令牌过期?

我在 oidc 客户端设置中将 automaticSilentRenew 设置为 true,这会触发对令牌端点的调用并获取新的访问令牌,然后我会监听 addAccessTokenExpiring 事件并设置新的用户信息。

使用授权代码流时是否有不同的方法来处理过期令牌?不能让它正常工作!

//注意:this.user 对象包含我在请求受保护的 api 时使用的访问令牌

我希望我对受保护 api 发出的 http 请求将使用新的访问令牌,但最终会使用过期的访问令牌并在客户端收到 401 ......

0 投票
2 回答
1880 浏览

javascript - 如何获取 AccessToken

我在 React 中使用以下插件(@axa-fr/react-oidc-context)来启用 AzureAd 身份验证。现在我需要在认证完成后访问 ApolloClient 中的 access_token。我不确定如何在 ApolloClient 等非反应组件中获取 access_token。

这就是我正在做的事情。

应用程序.js

布局.js

阿波罗.js

我正在尝试在 apollo.js 文件中提取访问令牌,但它会抛出错误,提示我无法访问非 React 组件中的 React Hooks。

0 投票
1 回答
2021 浏览

angular7 - 将自定义参数从角度 oidc-client 传递给 returnurl

我正在尝试将自定义参数传递给从 angular oidc-client 登录页面 IdentityServer 4 中使用的 returnURL。

根据我从 returnURL 收到的参数,我想绕过登录网站并将它们重定向到 IDP。我打算从角度将参数添加到特定页面,然后我想从那里重定向到登录。

下面的链接讨论了它们,但我无法关注它们。你们能帮忙吗。提前致谢。

将自定义参数传递给登录页面 Identity Server 4 中使用的 returnUrl

https://github.com/IdentityServer/IdentityServer4/issues/909

C# AccountController.cs

角 auth.service.ts

我希望 returnurl 有一个参数,并在 AccountController.cs 的 Login 方法中添加这样的条件。

0 投票
1 回答
683 浏览

ios - ASWebAuthenticatioSession SSO 对话同意问题

当使用 SFAuthenticationSession 或 ASWebAuthenticationSession 时,当前每次显示窗口时都会提示用户同意。

在某些时候,用户选择退出并再次显示 UIAlert 询问他们是否同意登录

用户已登录,正在尝试退出并被提示同意登录 - 因此他们可能会退出

另外,当尝试使用 ASWebAuthenticationSession 打开需要相同应用程序身份验证的网页时,会显示对话框,而当使用其他浏览器(如 SFSafariViewController)时,用户未经过身份验证。

0 投票
0 回答
114 浏览

keycloak - oidc-client - 使用自己的 URL 登录

我有一个小应用程序可以通过后端vue对用户进行身份验证。Keycloakoidc-client用来将客户端重定向到身份验证页面。

每当登录逻辑触发时,URL 使用客户端的 url 而不是权限。(所有查询参数都是正确的)。

这是浏览器上的网址:

在此处输入图像描述

这是我的代码(简化且没有 URL):

0 投票
4 回答
6454 浏览

angular - Azure AD B2C:客户在兑换机密授权时必须发送 client_secret

我尝试使用授权代码和 Azure AD B2C(客户端上的 oidc-client)为 Angular 应用程序设置身份验证,但我从 Angular 收到这些错误:

在此处输入图像描述

在查看 B2C 审计日志后,我发现了以下错误消息:

客户在兑换机密授权时必须发送 client_secret。

这是我的客户端配置:

如果我将上述配置切换为使用本地 IdentityServer 实例,则一切正常。

有人能指出我应该在哪里或如何调查这个吗?

0 投票
1 回答
2951 浏览

identityserver4 - 使用 Identity4 和 OidcClient 的授权代码流

对于 Winforms 桌面应用程序,我将使用 PKCE 的授权代码流。作为身份提供者,我使用IdentityServer和客户端库 OicdClient。下一步我必须决定使用哪个浏览器进行用户登录:

对于 SystemBrowser 来说,流程的简单/清晰的实现。对于 Extended WebBrowser 来说,有些用户可能没有 SystemBrowser。但是 WebBrowser 是一个旧的 IE 版本?是否允许用于安全身份验证?

尽管如此,我还是尝试了“Extended WebBrowser”示例,并偶然将它集成到我的原型环境中,并使用自己的 IS4 服务器。因此,我需要对代码流和重定向有所了解。我已经用纯 .Net 类实现了这个授权代码流,但是使用 OicdClient 让我有点困惑(一开始就像一个黑盒子)。

我的问题是重定向如何与这个库一起工作,谁负责重定向,谁负责接收带有代码的重定向(以交换访问令牌)?

代码流包含以下步骤(没有详细信息,如 clientID、PKCE ...):

  1. 向 IS4 发送代码请求
  2. 带有登录页面的 IS4 响应(显示在浏览器中)
  3. 成功登录后 IS4 发送到重定向 URL 的代码
  4. HttpListener 使用代码接收此重定向,并且
  5. 使用代码向 IS4 发送请求以接收访问令牌

使用 OidcClient 并使用自动模式:

这对我来说太神奇了。只有调用 LoginAsync() 才能使其工作......

重要的一点似乎是带有 IBrowser 接口的选项的 Browser 属性及其对该方法的实现:

如果我尝试映射到流程步骤:

  1. 登录页面:OpenBrowser(options.StartUrl);
  2. 重定向将由 IS4 完成?示例中的 SystemBrowser 不执行此操作。
  3. 接收代码:await listener.WaitForCallbackAsync();

1 和 5 可能是由 OicdClient 完成的。这个例子很清楚,需要确认重定向是由IS4完成的。

另一个示例扩展 WebBrowser中的实现

  1. 完成:browser.Navigate(options.StartUrl);
  2. 由 IS4 重定向
  3. 接收事件句柄中的代码:NavigateError ???

这里有什么问题吗?在 IS4 上调用 AccountController.Login 来调用 /connect/authorize/callback? 使用redirect_uri。但这并没有出现在 BeforeNavigate2 中。相反,NavigateError 事件出现在结果设置为:

0 投票
1 回答
143 浏览

identityserver4 - 使用 Identity4 和 OidcClient 的授权代码流的 netstandard 示例

是否有任何用于使用 Identity4 和 OidcClient 的授权代码流的 netstandard 2.0 示例?像仅在 .net 核心中的SystemBrowser