我有一个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;
}
成功登录后,我需要重定向到我的前端应用程序。
1条答案
按热度按时间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