Angular 4/5 + Spring Boot + Oauth2 支持

Posted

技术标签:

【中文标题】Angular 4/5 + Spring Boot + Oauth2 支持【英文标题】:Angular 4/5 + Spring Boot + Oauth2 support 【发布时间】:2018-08-18 05:18:51 【问题描述】:

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

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

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

我的第二个问题是如何在 Angular 4 中正确处理过期令牌时间。

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

如果您有一些建议或示例,请帮助!

【问题讨论】:

【参考方案1】:

不要担心对您的问题的粗鲁评论,单点登录 (SSO) 可能非常复杂。

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

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

Spring Boot 2 OAuth2.0 Client Configuration Spring Security 5 Custom OIDC User Service [VIDEO] Next Generation OAuth Support with Spring Security 5.0 - Joe Grandja

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

【讨论】:

以上是关于Angular 4/5 + Spring Boot + Oauth2 支持的主要内容,如果未能解决你的问题,请参考以下文章

angular2 spring-boot项目结构

Angular 基本身份验证 Spring Boot

Angular集成Spring Boot,Spring Security,JWT和CORS

在 Spring Boot 中将 Angular 环境变量传递给编译的静态 Angular 文件

Spring Boot + Angular 2 结构

Angular - Spring Boot - Keycloak - 401错误