Angular 4/5 + Spring 引导 + Oauth2 支持

Angular 4/5 + Spring Boot + Oauth2 support

我用 Angular 4/5 和 Spring Boot 构建了我的网络应用程序。现在我想将用户帐户添加到我的应用程序,但我遇到了一些问题。我想要我的 Auth 服务器(在 Spring 引导中),我还想使用像 Facebook 和 Google 这样的提供商。这是我的第一个问题,当用户选择 Facebook 进行身份验证时,我的资源服务器将如何知道谁在请求资源。当我使用自己的 Auth 服务器时,我是这样做的:

@GetMapping("/user/name")
public ResponseEntity<String>(Principle principle) {
     return new ResponseEntity<String>(principle.getName(), HttpStatus.OK);
}

这是可行的,但是当用户使用 Facebook 或 Google 身份验证时如何获取用户用户名?

我的第二个问题是如何正确处理Angular 4.

中的过期令牌时间

我的第三个也是最后一个问题。我的服务器中的一些资源将可用于 未登录用户(匿名)那么我如何保护我的资源以防止除我的客户之外的其他人使用我的 API?

如果您有一些建议或例子,请帮忙!

不要担心对您问题的粗鲁评论,Single Sign-On (SSO) 可能非常复杂。

如果您使用 Facebook 和 Google 作为可选的 SSO 提供商,那么您必须意识到,当您请求时,这些提供商会在用户信息旁边为您提供某种唯一标识符。

Spring 安全和相应的 Spring 启动自动配置对将 SSO 用户信息链接到主体有一些很好的支持。我将在下面添加一些很好的参考资料,以帮助理解 Spring 对此的解决方案。我将假定 Spring Boot 2 和 Spring Security 5,因为您的版本未列出。

如果您希望做的不仅仅是 SSO,您还可以查看 Spring Social