oauth2.0 成功登录keycloak后重定向至Frontend应用程序

bsxbgnwa  于 2023-01-25  发布在  其他
关注(0)|答案(1)|浏览(228)

我有一个react应用程序,它通过spring Cloud Gateway连接到资源服务器。现在,如果用户没有通过身份验证,Spring Cloud Gateway会将请求重定向到Keycloak登录页面,成功登录并从API获得响应后,我需要重定向到前端应用程序,但它会在浏览器中显示api响应。以下是api网关中的oauth配置。

security:
  oauth2:
    client:
      provider:
        my-keycloak-provider:
          issuer-uri: http://localhost:8055/auth/realms/webstore
      registration:
        keycloak-spring-gateway-client:
          provider: my-keycloak-provider
          scope: openid
          client-id: ecom-client
          client-secret: TUPr0SdFZCIftOaFcxfs8kz5CySlt6rX
          authorization-grant-type: authorization_code
          redirect-uri: "{baseUrl}/login/oauth2/code/keycloak"

因此,Spring云网关与keycloak交换授权代码并获取accessstoken,成功登录后,它将访问令牌存储在会话中。成功登录后,我需要重定向到前端应用程序。这是keycloak客户端配置,在这里,您可以看到重定向登录URL是Spring提供的云网关oauth2配置。

我的React登录方法是

login(url: string): void {
     this.fullUrl = base_url + url;
     console.log(this.fullUrl);
     window.location.href = this.fullUrl;
  }

成功登录后,我需要重定向到我的前端应用程序。

moiiocjp

moiiocjp1#

考虑使用keycloak-js库而不是自己完成所有这些操作。您可以选择在login方法中提供redirectUri
文件:https://www.keycloak.org/docs/latest/securing_apps/index.html#_javascript_adapter
如果您也在使用Next.js,那么您可以考虑使用NextAuth.js,它在其signIn方法中为callbackUrl提供了选项。
文件:https://next-auth.js.org/getting-started/client#specifying-a-callbackurl

相关问题