如何使用 Pivotal Spring Cloud Gateway 从单点登录 (SSO) 服务器获取用户详细信息?

How do I get the user details from the Single Sign-On (SSO) server with Pivotal Spring Cloud Gateway?

我已经能够使用以下文档成功地为我的 AngularJS 应用配置单点登录:

https://docs.pivotal.io/spring-cloud-gateway/1-0/getting-started.html#access-app-endpoint-at-gateway-path

当点击 URL 时,应用程序被重定向到我们的内部 SSO 页面,其余的事情随之发生并且运行良好。

此时我不确定如何获取正在登录应用程序的用户的详细信息。例如,登录人的用户id?

要访问位于 Spring 云网关实例后面的服务中的用户详细信息,您需要使用 TokenRelay 过滤器。

https://docs.pivotal.io/spring-cloud-gateway/1-0/using-sso.html#tokenrelay

只需将 "token-relay": true 添加到您的配置即可启用此功能:

示例:

$ cf bind-service cook my-gateway -c '{ "routes": [ { "path": "/cook/**", "sso-enabled": true, "token-relay": true } ] }'

此处记录了 TokenRelay 过滤器。

https://docs.spring.io/spring-cloud-security/docs/2.2.4.RELEASE/reference/html/#_client_token_relay_in_spring_cloud_gateway

您还需要记住 TokenRelay 过滤器将令牌传递到网关后面的服务器应用程序。

例如:Browser -> SCG -> (token id added here) -> your server app

您的服务器应用程序将正常响应,很可能是您的静态 HTML/CSS。如果您想从客户端(即 browser/single 页面 app/Angular 应用程序)访问用户信息,那么您的服务器应用程序将需要将该信息公开给您的应用程序。