问题标签 [angular-oauth2-oidc]

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 回答
8378 浏览

angular - 使用 angular-oauth2-oidc 和“静默刷新”而不将白名单静默刷新.html

我正在尝试angular-oauth2-oidc静默刷新实现与 IdentityServer4 服务器中配置的隐式流结合使用。我有一个ng new ng-and-ids4 --minimal使用此组件在应用程序中工作的概念证明:

在 IDServer4 端,我正在像这样配置我的客户端:

如您所见,在我已将'属性列入白名单"http://localhost:4200/silent-refresh.html"的服务器上。ClientRedirectUris

我的问题是您是否可以angular-oauth2-oidc以不需要我将silent-refresh.html页面列入白名单的方式进行配置?

我问的原因是因为我想在更改 IdentityServer 端可能不太容易的情况下也使用这种静默刷新方法。另外,看看Damien Bod 在 Angular 应用程序中的静默刷新示例,我觉得它应该是可能的,因为没有提到这样的白名单。

PS。如果我不包括额外的选项RedirectUris,那么我会Invalid redirect_uri: http://localhost:4200/silent-refresh.html进入服务器(日志)和silent_refresh_timeout OAuthErrorEvent客户端库中的一个。

0 投票
2 回答
9353 浏览

angular - 让 angular-oauth2-oidc 从其他选项卡检索访问令牌

我将angular-oauth2-oidc库与隐式流(带有 IdentityServer4 服务器)结合使用。我已经成功设置了文档中的静默刷新建议

这是我在包装服务中引导事物的方式:

但是,如果我在新选项卡中打开应用程序,用户也会被重定向到 IdentityServer(并立即返回我的应用程序)。

我的问题:我可以让图书馆从同源的其他选项卡中检索现有的访问令牌(以及可选的用户信息),以防止重定向?(首选,因为它不需要 Ajax 调用。)

或者,在我们将某人发送到 IdentityServer 之前,是否有一种简单的方法可以尝试使用静默刷新机制?

0 投票
1 回答
5855 浏览

angular - OAuthService 错误颁发者错误 (angular-oauth2-oidc)

我目前正在尝试在我的 Angular 应用程序中实现天蓝色广告身份验证。不幸的是,我遇到了一些问题。以下代码为我提供了我所期望的访问令牌。为了在我的 api 中实现它,我想使用 OpenIDConnect。

登录仍然有效,因为它给了我访问令牌,但是当我设置它时oidctrue它给了我以下错误:

我不确定如何解决此问题,因为在这种情况下,发行人具有正确的租户 ID。

希望有人可以帮助我解决这个问题。

0 投票
1 回答
745 浏览

angular - 在验证访问令牌角度 oauth2 oidc 时添加加载页面

我有一个使用 angular-oauth2-oidc 和 Keycloak OIDC 隐式流的角度页面。

使用 Keycloak 登录后,它将被重定向回登录页面。然后,登陆页面 [ app.component.html ] 将使用allowAccess()检查有效令牌以相应地显示main-navapp-cover

据我了解,因为这个验证需要一点时间,所以在检查这些令牌时,登陆页面会首先显示app-cover然后快速变为main-nav

这种行为似乎提供了糟糕的用户体验,因为登录页面在重定向到main-nav之前会闪烁一秒钟。有没有办法在获得这些验证时注入加载页面或延迟?此条件路由是否存在导致此问题的问题?

或者切换黑白组件时的最佳做法是什么?

谢谢

[app.component.html]

[app.component.ts]

[路由模块]

0 投票
0 回答
944 浏览

angular - 在 keycloak 上返回导航后启动隐式流程不起作用

我在我的 Angular 应用程序中使用带有 keycloak 的 angular-oauth2-oidc 库作为 Auth-Provider。在“快乐路径”中一切正常:

  1. 用户点击登录按钮
  2. 调用 initImplicitFlow 方法
  3. keycloak登录页面出现
  4. 用户输入他的凭据
  5. 重定向到角度应用程序

但是,当用户在 Keycloak 页面上单击浏览器的后退导航按钮,然后再次尝试通过点击 angular-app 中的登录按钮进行登录时,什么也没有发生。没有重定向到 Keycloak。只有当我重新加载页面或手动导航到 app-root 时,它才会再次起作用。

这种行为只发生在 Firefox 中,并且在 Chrome 甚至 Internet Explorer 或 Edge 中都能正常工作。也许有人知道它的解决方案:)

我的身份验证配置:

我不知道是否与问题有关,但我正在使用 HashLocationStrategy 进行路由。

我还在使用 Angular 6、Keycloak版本3.2.1.Finalangular-oauth2-oidc版本4.0.2

0 投票
3 回答
4650 浏览

identityserver4 - 打开多个浏览器选项卡时应如何处理用户注销用例

我在Identity Server 4 中使用angular-oauth2-oidc 。

用户需要通过 OpenId Connect Implicit Flow 登录。我的 ID 和访问令牌存储在 Web 浏览器 localStorage 中。

当用户打开多个浏览器选项卡然后用户从其中一个选项卡中注销时,我应该如何处理其余选项卡?

我试图捕捉 session_terminated events ,他们试图注销用户。但是,它不会将用户重定向回登录页面。

有什么建议么?谢谢

0 投票
4 回答
6123 浏览

identityserver4 - 使用 angular-oauth2-oidc 和 Identity Server 4 时无法获取用户名/给定名称

我正在关注 angular-oauth2-oidc 文档中的隐式工作流示例。

在我的 Angular 应用程序中一切正常,我可以登录(在此期间我被重定向到 Identity Server),获取我的令牌并使用此令牌访问我的 Web Api。

但是,我注意到“given_name”声明为空,因此登录页面上不显示用户名。具体来说,示例代码中的以下方法似乎返回 null:

我认为这可能是权限问题,但我的范围设置为:

知道我需要改变什么来获得这个“given_name”声明吗?

0 投票
2 回答
10933 浏览

angular - angular-oauth2-oidc,如何检测我是否在其他地方登录?

我将 angular-oauth2-oidc 库与带有 keycloak 的隐式流结合使用。

this.oauthService.initImplicitFlow();登录或注销都没有问题this.oauthService.logOut();

但是,我想知道,是否可以检查我是否已经在其他地方登录?(不同的域但使用相同的 keycloak 服务器)

我搜索了 angular-oauth2-oidc 的文档,但没有找到。

我已经尝试过this.oauthService.initImplicitFlowInternal();,但它似乎与this.oauthService.initImplicitFlow();

更新:

我已经使用silentRefresh 获得了令牌,但是,它似乎创建了另一个导航组件(或者可能是一个全新的页面)。问题是,这个“新”页面被隐藏了,我只能看到“旧”页面。 在此处输入图像描述

我使用时间戳为导航组件创建了一个 id,如您所见,实际上有两个 id。

“新”组件获得了令牌,因此它已登录(但该组件被隐藏了!)。

“旧”组件不知道令牌,因此它仍然在导航栏上显示“登录”,除非我手动创建一个按钮并在单击时从会话存储中获取令牌。

更新:第二个组件是 iframe。我会探索更多。

0 投票
1 回答
1618 浏览

angular - 使用 angular-oauth2-oidc 库从 Auth0 获取完全访问令牌

我已将angular-oauth2-oidc设置为与 Auth0 一起使用。但是,Auth0 不断向我发送一个非常短的访问令牌,例如mSNhEfdDHK6t-kT5QweRtgec-FPGAsdfEw9,而不是完整的 JWT 令牌。以下是重现该问题的方法:

  1. 在 Auth0 中创建一个您希望作为资源访问的示例“API”。
  2. 在 Auth0 中为隐式流创建 SPA 应用程序设置。
  3. 按照快速入门angular-oauth2-oidc或克隆我的示例存储库
  4. 按照以下方式配置它:

    /li>
  5. initImplicitFlow()通过单击应用程序上的登录按钮来触发呼叫。

当你这样做时:

  • 结果:完整的 JWT IdToken,但较短的 AccessToken。
  • 预期:两个令牌都是完整的 JWT 令牌。

Auth0 社区论坛上有这个帖子解释了为什么你会得到这样一个“不透明的字符串”作为访问令牌。最受接受的答案提到了我已经在做的事情(sope就像我做的那样,打电话/authorize等)。但是,在该线程的较低位置它提到设置audience调用时/authorize的解决方案,无论如何这似乎是一件好事。

但是你如何发送audience类型上没有这样AuthConfig属性来设置它,并且查看initImplicitFlow()源它只是直接改变location.href,所以那里也没有拦截。

0 投票
1 回答
864 浏览

angular6 - 如何在 angular-oauth2-odic 中将标头内容类型设置为 application/json?

我将 Content-Type 标头设置为application/jsonfromfetchTokenUsingPasswordFlow方法,但它是application/x-www-form-urlencoded. 有没有办法将标题内容类型设置为application/json

根据源代码,Content-Type标头已被硬编码为application/x-www-form-urlencoded.

我正在为后端使用 Spring Boot Rest 服务,但它不允许application/x-www-form-urlencoded作为Content-Type. 请在下面找到示例 Angular 6 代码供您参考: