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

javascript - 使用 iframe 加载网站

我们有一个使用 iframe 嵌入到 Angular 应用程序中的 mvc 网站。这曾经可以正常工作,因为这两个应用程序都托管在同一个域中,并且可以使用基于 cookie 的身份验证机制。

但我们最近需要将身份验证机制更改为 Open Id 连接(使用 .net 开源身份提供者)。由于该系统希望将授权令牌放置在标头中,因此该 iframe 加载机制失败了。

关于如何将此站点加载到 iframe 但仍传递 auth 标头的任何好的建议。而且,一旦 i 框架在内部加载,mvc 网站还需要进行一些服务调用,而这些调用又需要传递授权标头。

请让我知道是否有更好和更清洁的方法来解决这个问题。

0 投票
2 回答
7068 浏览

auth0 - oidc-client-js 针对 Auth0 的 signoutRedirect 不返回结束会话端点

我已经成功地使用了Brock Allen 的oidc-client-js库来验证我的 SPA 应用程序,其中 Auth0 作为我的身份提供者。但是,当我尝试使用库将用户注销时mgr.signoutRedirect({state: "my test"}),我收到一个错误:no end session endpoint

在此处输入图像描述

查看元数据端点表明存在撤销端点。

我已经像这样配置了 oidc-client-js 库:

关于我所缺少的任何想法?

0 投票
1 回答
2039 浏览

oidc-client-js - oidc-client 身份验证失败:来自用户信息端点的 sub 与 access_token 中的 sub 不匹配

我有一个使用 oidc-client 的角度应用程序来访问使用 IdentityServer3 提供 OpenID Connect 身份验证的 API。

在身份验证期间,oidc-client 会引发错误:

仅供参考,以下步骤是成功的:

  • POST 到 API 的/openid/login?signin=xxx
  • 重定向到 API 的/openid/connect/authorize
  • 重定向回 Angular 应用程序

但随后 oidc-client 调用了 API 的/openid/connect/userinfo.

API 没有实现 userinfo 端点,/openid/connect/userinfo返回一个空对象:{}

然后 oidc-client 用上面的错误信息停止了整个事情。

oidc-client 中是否有一个选项可以跳过对 userinfo 端点的调用?或者 API 是否必须实现该端点?

0 投票
0 回答
153 浏览

openid - 用于在应用程序中签核工作的 OpenID 重新身份验证

我有一个 SPA 应用程序,其中包含一些受 OpenID 身份验证保护的 WebAPI 方法。用户首先登录 SPA 应用程序,然后在应用程序中执行一些工作,然后需要通过与身份提供者重新进行身份验证来签署此工作。

SPA 应用程序使用 oidc-client-js。为了强制重新认证,我们传入带有值“login”的提示参数。然后,用户会收到一个新的访问令牌,该令牌可用于调用 WebAPI 方法来签署工作。

签核 WebAPI 方法必须确保以与最初登录应用程序相同的身份签核工作。当应用程序仍在使用带有会话 cookie 的 WsFed(我们现在将其更改为 OpenID)时,WebAPI 能够断言传入的身份与当前用户身份相同。但是,由于使用 OpenID 我们不想使用会话 cookie,所以 WebAPI 可能会同时要求登录访问令牌和签核访问令牌,以断言两者都用于相同的身份。这甚至似乎没有意义。甚至可以做到吗?也许签核 WebAPI 只需要断言签核身份有权在作品上签核,而与首先登录应用程序的用户身份无关。

其次,用户必须为单独的工作单独签字。因此,当用户在资源 A 上执行工作时,通过身份提供者重新验证来签署资源 A 上的工作,然后在资源 B 上执行工作,WebAPI 需要确保资源 B 上的工作已签署使用为资源 B 获得的访问令牌,而不是使用先前为资源 A 获得的访问令牌。

在重新验证以注销工作时,我们在重定向 uri 中指定资源 Guid(这可能需要在 ADFS 中的回复 url 中指定通配符?它似乎不需要在 IdentityServer3 中进行特殊配置)。当我们使用 WsFed 时,signoff WebAPI 方法可以断言当前请求 url 与传入身份验证票证中包含的重定向 uri 相同。使用 OpenId 时,我认为访问令牌不包含为其颁发的重定向 uri,对吗?那么签核 WebAPI 如何断言为当前正在签核的资源颁发了访问令牌?

下面是一些基于我们如何使用 WsFed 做事的代码,但我不确定这是否适用于 OpenID。

非常感谢您的帮助

0 投票
2 回答
2007 浏览

angular - Oidc-client UserManager 未定义错误

我正在构建一个 Angular 5 应用程序,使用 Identity Server 3(隐式流),基于本教程: https ://www.scottbrady91.com/OpenID-Connect/Silent-Refresh-Refreshing-Access-Tokens-when-using -the-Implicit-Flow (他使用 Identity 4)

到目前为止,一切正常,除了静默刷新页面的 signinSilentCallback 调用。我的页面看起来像:

我最初将 odic-client.js 文件直接引用为他的示例,但无论哪种方式,我都会收到以下错误:

VM861 silent-refresh.html:7 Uncaught ReferenceError: UserManager is not defined at VM861 silent-refresh.html:7

不知道我错过了什么,为什么它不能创建对 UserManager 对象的引用。.js 已加载,因为我在 Chrome 的网络选项卡中看到了该文件。一旦令牌过期,silent-refresh.html 页面就会与 oidc-client.js 文件一起显示在网络选项卡中。

0 投票
1 回答
2492 浏览

openid-connect - OpenID Connect:使用 response_type 令牌请求范围 openid 是否错误

有一个行为不端的 OpenID Connect“兼容”iDP(它现在应该保持无名) - 在使用范围 openid 和任何包含 id_token 的 response_type 时会引发错误。这肯定是一个已报告的错误。

当范围包括 openid 并且 response_type 只是“token”时,相同的 iDP 也会在隐式流中返回 id_token。这弄乱了广泛使用的 oidc-client npm 包,它报告了一个错误“Not expecting id_token in response”——根据 OIDC 规范,它是严格正确的

但这带来了一个有趣的问题:

鉴于 OIDC 规范第 1 节的基本前提:

OpenID Connect 将身份验证作为 OAuth 2.0 授权过程的扩展来实现。客户端通过在授权请求中包含 openid 范围值来请求使用此扩展。

并且第 3.2.2.1 节说

注意:虽然 OAuth 2.0 还为隐式流定义了令牌响应类型值,但 OpenID Connect 不使用此响应类型,因为不会返回任何 ID 令牌。

因此,将两者一起使用是否应该是错误的?或者 openid 在范围内的事实是否应该导致实现默认将 id_token “添加”到隐式流的 response_type ?

0 投票
2 回答
1959 浏览

javascript - 如何在 React JS 应用程序中为 Identity Server 4 设置“redirect_uri”并使用路由指向其中一个视图?

我跟着这个 - http://docs.identityserver.io/en/release/quickstarts/7_javascript_client.html

使用以下配置,我尝试从我的 ReactJS 应用程序登录 Identity Server。登录成功后加载http://localhost:3000/callback.html 。我在 url 中有 id_token 和 access_token 。但是,我确信这个 callback.html 不是我在文件夹结构中的'src\callback.html'。即使我删除了 'src\callback.html' 文件,http://localhost:3000/callback.html#id_token= .......仍然会被加载。我可以知道如何将 redirect_uri 更改为我的 React 应用程序中的视图(例如 Home.js 而不是 html 文件)吗?我希望我应该为此使用路线。请指教。

PS:

我需要将 redirect_uri 和 post_logout_redirect_uri 设置为我的 React 应用程序(不是 html 文件)中的任何视图,以便我可以在回调视图中执行以下操作。

0 投票
1 回答
1694 浏览

identityserver4 - 使用 SPA 和 oidc-js 的会话超时

我在 oidc-client 和身份服务器 4 中使用 angular 5。oidc-client 是否支持会话超时,或者我需要手动实现它?

我的意思是会话超时,用户将在一段时间不活动后注销

0 投票
1 回答
2558 浏览

javascript - oidc-client.js 引发“未通过权限”错误

我是 SSO 的新人。最近我专注于一个使用 OIDC 的项目。我尝试使用 oidc-client 来解决问题。这是我的设置。(我删除了详细网址,但它们是有效的)。

但它没有重定向到authorization_endpoint。相反,它会引发如下错误

oidc-client.min.js?dd17:1 SigninRequest.ctor: No authority pass error @ oidc-client.min.js?dd17:1 SigninRequest @ oidc-client.min.js?dd17:3 (匿名) @ oidc- client.min.js?dd17:3 Promise.then (async) createSigninRequest @ oidc-client.min.js?dd17:3 (anonymous) @ oidc-client.min.js?dd17:3 Promise.then (async) _signinStart @oidc-client.min.js?dd17:3 signinRedirect @oidc-client.min.js?dd17:3 onSubmit @HelloWorld.vue?140d:71 点击@HelloWorld.vue?1f3f:21 调用者@vue.runtime.esm .js?2b0e:2023 fn._withTask.fn._withTask@vue.runtime.esm.js?2b0e:1822

我在 vue-cli 环境下运行代码。但我认为这不会导致问题。如果您遇到类似的问题,请告诉我如何解决。谢谢你。

0 投票
2 回答
396 浏览

javascript - 静默续订后未请求 IdentityServer 用户信息端点

我们目前面临的问题是,静默更新在大约 30 分钟后将无法正常工作。我们能够确定 IS4 上缺少 SubjectId。

在 chrome 中查看客户端请求的网络选项卡时,可以看到以下顺序:

  1. 认证请求
  2. 静默续订请求
  3. 用户信息请求

网络请求

在下一个身份验证请求之前缺少第三步,我猜是因为 SubjectId。

我们的访问令牌生命周期为 1 小时,身份令牌生命周期为 5 分钟。出于测试目的,我们将静默更新设置为每 4 分钟触发一次。我们将 oidc-client-js@1.4.1 与 redux-oidc 库结合使用。

我们在客户端/服务器端的配置中是否忘记了什么?

非常感谢。