问题标签 [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.
angular - 使用 angular-oauth2-oidc 和“静默刷新”而不将白名单静默刷新.html
我正在尝试将angular-oauth2-oidc
静默刷新实现与 IdentityServer4 服务器中配置的隐式流结合使用。我有一个ng new ng-and-ids4 --minimal
使用此组件在应用程序中工作的概念证明:
在 IDServer4 端,我正在像这样配置我的客户端:
如您所见,在我已将'属性列入白名单"http://localhost:4200/silent-refresh.html"
的服务器上。Client
RedirectUris
我的问题是您是否可以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
客户端库中的一个。
angular - 让 angular-oauth2-oidc 从其他选项卡检索访问令牌
我将angular-oauth2-oidc库与隐式流(带有 IdentityServer4 服务器)结合使用。我已经成功设置了文档中的静默刷新建议。
这是我在包装服务中引导事物的方式:
但是,如果我在新选项卡中打开应用程序,用户也会被重定向到 IdentityServer(并立即返回我的应用程序)。
我的问题:我可以让图书馆从同源的其他选项卡中检索现有的访问令牌(以及可选的用户信息),以防止重定向?(首选,因为它不需要 Ajax 调用。)
或者,在我们将某人发送到 IdentityServer 之前,是否有一种简单的方法可以尝试使用静默刷新机制?
angular - OAuthService 错误颁发者错误 (angular-oauth2-oidc)
我目前正在尝试在我的 Angular 应用程序中实现天蓝色广告身份验证。不幸的是,我遇到了一些问题。以下代码为我提供了我所期望的访问令牌。为了在我的 api 中实现它,我想使用 OpenIDConnect。
登录仍然有效,因为它给了我访问令牌,但是当我设置它时oidc
,true
它给了我以下错误:
我不确定如何解决此问题,因为在这种情况下,发行人具有正确的租户 ID。
希望有人可以帮助我解决这个问题。
angular - 在验证访问令牌角度 oauth2 oidc 时添加加载页面
我有一个使用 angular-oauth2-oidc 和 Keycloak OIDC 隐式流的角度页面。
使用 Keycloak 登录后,它将被重定向回登录页面。然后,登陆页面 [ app.component.html ] 将使用allowAccess()检查有效令牌以相应地显示main-nav或app-cover。
据我了解,因为这个验证需要一点时间,所以在检查这些令牌时,登陆页面会首先显示app-cover然后快速变为main-nav。
这种行为似乎提供了糟糕的用户体验,因为登录页面在重定向到main-nav之前会闪烁一秒钟。有没有办法在获得这些验证时注入加载页面或延迟?此条件路由是否存在导致此问题的问题?
或者切换黑白组件时的最佳做法是什么?
谢谢
[app.component.html]
[app.component.ts]
[路由模块]
angular - 在 keycloak 上返回导航后启动隐式流程不起作用
我在我的 Angular 应用程序中使用带有 keycloak 的 angular-oauth2-oidc 库作为 Auth-Provider。在“快乐路径”中一切正常:
- 用户点击登录按钮
- 调用 initImplicitFlow 方法
- keycloak登录页面出现
- 用户输入他的凭据
- 重定向到角度应用程序
但是,当用户在 Keycloak 页面上单击浏览器的后退导航按钮,然后再次尝试通过点击 angular-app 中的登录按钮进行登录时,什么也没有发生。没有重定向到 Keycloak。只有当我重新加载页面或手动导航到 app-root 时,它才会再次起作用。
这种行为只发生在 Firefox 中,并且在 Chrome 甚至 Internet Explorer 或 Edge 中都能正常工作。也许有人知道它的解决方案:)
我的身份验证配置:
我不知道是否与问题有关,但我正在使用 HashLocationStrategy 进行路由。
我还在使用 Angular 6、Keycloak版本3.2.1.Final和angular-oauth2-oidc版本4.0.2
identityserver4 - 打开多个浏览器选项卡时应如何处理用户注销用例
我在Identity Server 4 中使用angular-oauth2-oidc 。
用户需要通过 OpenId Connect Implicit Flow 登录。我的 ID 和访问令牌存储在 Web 浏览器 localStorage 中。
当用户打开多个浏览器选项卡然后用户从其中一个选项卡中注销时,我应该如何处理其余选项卡?
我试图捕捉 session_terminated events ,他们试图注销用户。但是,它不会将用户重定向回登录页面。
有什么建议么?谢谢
identityserver4 - 使用 angular-oauth2-oidc 和 Identity Server 4 时无法获取用户名/给定名称
我正在关注 angular-oauth2-oidc 文档中的隐式工作流示例。
在我的 Angular 应用程序中一切正常,我可以登录(在此期间我被重定向到 Identity Server),获取我的令牌并使用此令牌访问我的 Web Api。
但是,我注意到“given_name”声明为空,因此登录页面上不显示用户名。具体来说,示例代码中的以下方法似乎返回 null:
我认为这可能是权限问题,但我的范围设置为:
知道我需要改变什么来获得这个“given_name”声明吗?
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。我会探索更多。
angular - 使用 angular-oauth2-oidc 库从 Auth0 获取完全访问令牌
我已将库angular-oauth2-oidc
设置为与 Auth0 一起使用。但是,Auth0 不断向我发送一个非常短的访问令牌,例如mSNhEfdDHK6t-kT5QweRtgec-FPGAsdfEw9
,而不是完整的 JWT 令牌。以下是重现该问题的方法:
- 在 Auth0 中创建一个您希望作为资源访问的示例“API”。
- 在 Auth0 中为隐式流创建 SPA 应用程序设置。
- 按照快速入门
angular-oauth2-oidc
或克隆我的示例存储库。 按照以下方式配置它:
/li>initImplicitFlow()
通过单击应用程序上的登录按钮来触发呼叫。
当你这样做时:
- 结果:完整的 JWT IdToken,但较短的 AccessToken。
- 预期:两个令牌都是完整的 JWT 令牌。
Auth0 社区论坛上有这个帖子解释了为什么你会得到这样一个“不透明的字符串”作为访问令牌。最受接受的答案提到了我已经在做的事情(sope
就像我做的那样,打电话/authorize
等)。但是,在该线程的较低位置它提到设置audience
调用时/authorize
的解决方案,无论如何这似乎是一件好事。
但是你如何发送audience
?类型上没有这样的AuthConfig
属性来设置它,并且查看initImplicitFlow()
源它只是直接改变location.href
,所以那里也没有拦截。
angular6 - 如何在 angular-oauth2-odic 中将标头内容类型设置为 application/json?
我将 Content-Type 标头设置为application/json
fromfetchTokenUsingPasswordFlow
方法,但它是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 代码供您参考: