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

angular - Angular Universal 启用了 initialNavigation 并且 CanActivateChild 返回 false 没有响应

我有一个带有 SSR 的 Angular 应用程序,其中所有路由都受到保护,并且 RouterinitialNavigation属性设置为enabled. 我正在使用带有代码流 + PKCE的angular-oauth2-oidc包。所有路由都是延迟加载的,我有一个CanActivateChild警卫检查用户是否经过身份验证。

在浏览器中时,CanActivateChild检查它是否已通过身份验证,如果未通过,它会重定向到 Azure AD B2C 以执行身份验证。这在没有 SSR 的情况下运行良好。

在服务器中,CanActivateChild如果它没有经过身份验证,它只是通过返回来取消导航,false但没有重定向。这个想法是返回没有激活的路由,只渲染/引导根组件,因为它没有经过身份验证,让浏览器处理身份验证。我把它留给浏览器,因为angular-oauth2-oidc是针对浏览器平台的,其中的一些功能在OAuthService服务器上不起作用,因为它依赖于一些浏览器 API,我确实有OAuthStorage每个平台的实现,所以我可以得到每个平台上的代币。使用此设置,Express.js 服务器不会响应,我认为这是因为应用程序的引导正在等待导航完成,initialNavigation因为enabled. 我希望这能正常工作,因为从某种意义上说,取消也是导航的完成。

我可以考虑几种解决方法,比如禁用initialNavigation哪个不好,因为这会导致页面闪烁(所以它不是),或者重定向到一个空组件只是为了完成导航,或者手动重定向服务器到 Azure AD B2C 授权端点等。

有没有人遇到过这个并有更好的解决方案?我错过了什么还是我配置错误?

编辑,添加一些片段:

身份验证:

如果令牌在 cookie 中,则服务器仅发送它authService.isAuthenticated$。我验证并在没有存储令牌时在服务器中成功返回,否则。当它为真时,自导航完成后一切正常。ObservableBehaviorSubjectfalsetrue

浏览器中的方法authService.login调用OAuthService.initCodeFlow方法。在服务器中,它是一个空方法。

0 投票
1 回答
666 浏览

azure-active-directory - 使用 loadDiscoveryDocumentAndTryLogin() 阻止 CORS 错误

我正在使用 Azure B2C 的 Angular 9 身份验证。在 Angular 中,我使用的是 Auth angular-oauth2-oidc 库。

如果我在配置方法中有 loadDiscoveryDocumentAndTryLogin() 代码并不确定我缺少什么,我会收到 CORS 块错误。如果我禁用 loadDiscorveryDocumentAndTryLoging() 代码,那么我会设法重定向到 Azure B2C 登录页面

在此处输入图像描述

0 投票
1 回答
247 浏览

oauth-2.0 - 更改已通过身份验证的用户的声明?

有什么方法可以将额外的参数传递给来自 oidc-client 的 signinsilent / 静默刷新调用,基于这些参数我可以向访问令牌添加额外的声明?

基本上我们有资源服务器和授权服务器(身份服务器 4 设置),它处理身份管理和授权)。我们的产品是一个 Angular 应用程序,我们使用访问令牌调用 API,我们在客户端使用 oidc-client。我们使用静默更新来更新客户端的令牌。

在我们的应用程序中,用户可以访问多个组织,并且在每个组织中使用可以具有不同的角色。目前,当用户登录时,我正在添加默认组织的角色作为角色声明。当用户切换到其他组织时,我需要使用新的组织角色刷新声明。我正在使用隐式流程。

请帮我提出建议。

0 投票
1 回答
1429 浏览

angular - 使用 angular-oauth2-oidc 进行 Angular 9 身份验证

我正在评估在 Angular 9 应用程序中使用 angular-oauth2-oidc 包。我一直在玩在这里找到的工作示例。

当我运行工作示例并打开两个单独的浏览器会话(Chrome)并尝试使用提供的两个用户名/密码登录时,我注意到以下内容:

  1. 当我在一个浏览器中注销时,另一个浏览器会注销。
  2. 当我登录一个浏览器并尝试登录第二个浏览器(使用不同的用户帐户)时,它会自动让我登录,而无需进行身份验证
  3. 当我注销时,我注意到 sessionStorage 已被删除,但是当我单击登录时我仍然自动登录。

这是预期的功能吗?看起来很奇怪的行为。谁能推荐我如何配置 angular-oauth2-oidc 来克服这个突出的问题?

0 投票
0 回答
495 浏览

azure-active-directory - 如何使用 Azure AD B2C 重定向 URI 传递自定义变量并在公共着陆页中访问该变量?

我正在尝试使用angular-oauth2-oidc auth 配置在 angular8 中的 azure ad b2c 工作流程中将自定义变量作为“状态”传递,并且需要在我的公共登录页面中访问此值。

我必须处理多个登录页面/应用程序,这些页面/应用程序需要重定向到一个公共登录页面 index.html,并且需要访问自定义字符串来识别请求的应用程序。

例如:我有 2 个登录页面

当我尝试使用许多文章添加状态以及重定向 URL 时,由于重定向 URL 不匹配,它经常返回错误。

当我尝试将其添加到 authConfig 文件中时,它显示错误,因为“对象文字可能只指定已知属性,并且“状态”在“AuthConfig”类型中不存在

谁能帮我选择一个正确的解决方案。提前致谢。

app.component.ts

auth.config.ts(示例)

0 投票
1 回答
540 浏览

oauth - 如何添加 google OAuth2 来验证使用 wso2 身份管理器作为身份验证提供程序的角度节点应用程序?

我们目前正在开发一个使用 WSO2 Api Manager 和 Identity Server 的 Angular 节点应用程序。当前的登录模式是通过保存为 WSO2 Carbon 用户的电子邮件完成的。我们需要允许用户使用 OAuth2 使用他们的 google 或 facebook 帐户登录。我已经实现了获取访问令牌的代码,通过谷歌在我的应用程序中点击一个按钮时刷新令牌。但是我如何链接它以将此用户保存为我们应用程序的身份服务器中的用户。我发现以下链接有助于此过程:https ://docs.wso2.com/display/IS570/Logging+in+to+an+Application+Using+Google#50629d9a6ddf4769ae2d8953c5a25645 。

谁能建议我这个是否有帮助?

我想知道如何将 google 帐户用户详细信息保存为我们的身份管理器中的用户?

可能吗 ?如果可能,我将从谷歌获得哪些数据?

0 投票
1 回答
2385 浏览

angular - 使用 angular-oauth2-oidc 的 Angular 和 OAuth 2 授权代码授权流程

甚至对于即将推出的 OAuth 2.1 中的 Angular 等公共客户端应用程序,也建议使用授权代码授权流程。

但是 Angular 应用程序通常是 SPA,这意味着没有内置的服务器端来存储 client_secret。

库“angular-oauth2-oidc”声称支持代码授权流程,但我找不到任何可用的开源解决方案。

尝试过 Vouch Proxy,但它设置了包含 access_token 和 id_token 的 cookie,但 angualr-oauth2-oidc 无法识别该 cookie。angualr-oauth2-oidc 中的代码流被实现为对 https://{your-authentication-server}/token.oauth2 的 xhr 请求,因此这两个不匹配。

非常感谢任何想法、更正或解决方法。

0 投票
0 回答
682 浏览

angular - Angular oauth2-oidc - 配置的哪一部分检索令牌以及它存储在哪里?

我正在尝试在我的应用程序中使用库angular-oauth2-oidc

这是我的 AuthConfig

这是我为隐式流配置解决方案的组件:

如您所见,我没有this.oauthService.initImplicitFlow()在上面的代码中调用。我在一个子组件中执行此操作,在该组件中我还收集了一些用户的额外详细信息并将它们存储到本地存储中,然后再将它们重定向到标识提供者。

这段代码工作得很好。我这么说是因为即使用户被重定向到身份提供者并且也被正确识别,但在本地存储或会话存储中都看不到令牌,即使我可以看到在 url 中返回了令牌:

我想知道的是:

  1. 上面代码的哪一部分应该检索和存储access_token身份提供者返回的内容?
  2. 它应该存储在哪里?

如果#access_token附加到 的那个段redirectUri不是在您将范围配置为 时应该返回的令牌responseType: 'id_token token',那么我应该在哪里查找该令牌?

我真的希望你能对此有所了解。

0 投票
0 回答
109 浏览

angular - 将 Angular 嵌入 Business Central 并让身份验证正常工作

目前我正在使用 Angular 进行一个有趣的项目。我的公司主要为 Microsoft Business Central 开发,并希望我在 Business Central 组件中嵌入一个 Angular 应用程序。

我认为 Business Central 开发人员的目标群体很小,但我认为在将 Angular 应用程序嵌入另一个应用程序(如 wordpress 等)时,您会遇到同样的问题。

因此,我创建了一个ng new项目(带有路由)并使用 Azure B2C 作为身份提供者实现了身份验证(使用浏览器弹出窗口输入您的凭据)。我创建了一个组件来测试路由(/home)。

当使用ng serve登录流程运行应用程序时,我已通过身份验证。但是在构建项目并将其嵌入到 Business Central Extension 之后,我可以单击导航菜单将路由切换到“/”和“/home”,但我的身份验证不起作用。

这是完全有道理的,因为我的应用程序后面没有正确的 URL,因为它是嵌入的。所以重定向 URL 是未知的。我也不知道,因为window.location.origin提到我在https://businesscentral.dynamics.com和 Angular 在“/home”或“/”上有它的活动路线。

因此,我无法从业务中心外部调用某些资源或点击由 Angular 路由注册的 URL ...

如果确实有,我有哪些选择可以使身份验证正常工作?对于身份验证,我使用“angular-oauth2-oidc”和 PXCE 的授权代码流。

下面是在 Business Central 中运行的 Angular 的屏幕截图 在此处输入图像描述

0 投票
1 回答
2538 浏览

spring - 在 Spring Security + Angular 中实现刷新令牌

我正在使用 OAuth2 和 JWT开发这个 Spring Security实现:

根据作者的说法,我可以通过这种方式使用令牌访问资源:

To access a resource use (you'll need a different application which has configured ResourceServer):

http localhost:8080/users 'Authorization: Bearer '$ACCESS_TOKEN

关于这一步:

To use the refresh token functionality:

http --form POST adminapp:password@localhost:9999/oauth/token grant_type=refresh_token refresh_token=$REFRESH_TOKEN

我不清楚何时需要刷新令牌以及如何将这部分处理为 Angular。当令牌过期时,我是否需要先向端点发送请求以刷新令牌,然后再发送到登录页面?

这个案例应该如何执行?