【问题标题】:OAuth2 and SSO with angular-oauth2-oidc won't retrieve access token带有 angular-oauth2-oidc 的 OAuth2 和 SSO 不会检索访问令牌
【发布时间】:2021-11-14 02:40:35
【问题描述】:

这是我的问题

我正在尝试使用 angular-oauth2-oidc 实现 SSO 和 OAuth2 流。我可以使用 POSTMAN 和 ThunderClient(VS 代码)获得正确的响应(access_token),但不能使用 Angular

这是我的配置:

 authCodeFlowConfig: AuthConfig = {
    issuer: 'https://URL.com/',
    loginUrl: 'https://URL.com/authorize-client',
    clientId: environment.API.CLIENT_ID,
    responseType: 'code',
    scope: environment.API.SCOPE,
    tokenEndpoint: 'https://URL.com/request-access',
    dummyClientSecret: environment.API.CLIENT_SECRET,
    redirectUri: window.location.origin,
    showDebugInformation: true,
  }

...

  constructor(
    private httpClient: HttpClient,
    private oauthService: OAuthService
  ) {
    this.getAuthorizeClientCode()
  }

...


getAuthorizeClientCode() {
    this.oauthService.configure(this.authCodeFlowConfig);
    this.oauthService.tokenValidationHandler = new JwksValidationHandler()
    this.oauthService.tryLogin({
      onTokenReceived: context => {
        console.log(context)
      }
    })
      .then(() => {
        if (this.oauthService.hasValidAccessToken()) {
          this.oauthService.silentRefresh()
        } else {
          this.oauthService.initCodeFlow();
        }
      })
      .catch(err => console.log(err))
  }

会发生什么:流程一直运行到某一点。我登录并获取代码并调用端点“request_access”,但就是这样,令牌端点向我抛出了一个错误:

当我检查网络选项卡时,我的信息就在那里:

我到处搜索,但我真的不知道我错过了什么,因为流程在 POSTMAN 中有效,但在 Angular 中无效。

【问题讨论】:

  • 你能和后端团队核实一下吗,他们已经配置了cors。

标签: javascript angular oauth-2.0 single-sign-on access-token


【解决方案1】:

你需要在后端启用cors,你可以在chrome上安装这些工具来禁用它进行测试

https://chrome.google.com/webstore/detail/moesif-origin-cors-change/digfbfaphojjndkpccljibejjbppifbchttps://

【讨论】:

  • 谢谢,就是这样!我现在将尝试与提供商取得联系并要求启用 CORS
  • 如果他正在使用 cors,他现在还必须使用代理,这是使用 angular 的更好方法。 betterprogramming.pub/…
猜你喜欢
  • 2018-10-26
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
  • 2022-12-22
  • 2021-06-22
  • 1970-01-01
相关资源
最近更新 更多