【问题标题】:Flutter with REST backend SpringbootFlutter 与 REST 后端 Springboot
【发布时间】:2020-02-14 17:52:47
【问题描述】:

我正在开发一个带有 Spring Boot 后端Flutter 移动应用程序。我想要三种登录方式(1)。用户名和密码(2)。 Facebook (3)。谷歌。

我有以下问题

1) 如果我通过 Firebase 身份验证处理移动应用程序中的身份验证部分(并将所有用户存储在 Firebase 上),我是否需要在我的 Spring Boot 一边?或者我只需要在 Sprin Bboot 端保留我的身份验证?

2) 我想要所有身份验证系统(Facebook、Google 和用户名和密码)的 JWT 令牌。移动应用程序将针对它向 Springboot 应用程序发出的每个请求发送 JWT 令牌。

3) 我正在寻找一个分步教程,说明如何将所有这些登录方法集成到我的 Springboot REST API 中。我看过很多,但它们都有一些不同的方法或依赖项。就像有些人在 maven 中添加 Facebook 依赖项,有些人只添加 Oauth2

提前谢谢你

【问题讨论】:

  • 这可能会有所帮助。 baeldung.com/spring-security-oauth
  • 嗨!也很感兴趣。你找到答案了吗?
  • 不是真的......然后我搬到了 Firestore......
  • 嗨@Sam,我也是从以 Spring Boot 作为后端的 Flutter 开始的。你有什么相同的参考,你遵循了什么?
  • 实际上我搬到了 Firebase 而不是将 Spring Boot 作为后端。

标签: rest spring-boot flutter spring-security-oauth2


【解决方案1】:

您可以通过在 Spring Boot 应用程序中定义自定义安全过滤器,使用 JWT 将 Spring Boot 后端与外部身份验证提供程序集成。此过滤器将读取 JWT 颁发者 (iss) 并定义其来源(Facebook 或 Google)。然后,根据提供者,使用适当的公钥来验证 JWT 中包含的签名(通常可以使用身份验证提供者提供的 JWKS URI 来获取密钥)。如果一切正常,则认证成功。

【讨论】:

    【解决方案2】:

    我用

    • 颤动
    • 用于数据库访问 (REST) 的 Spring
    • 用于身份验证的 Firebase

    问题是:如何验证 REST 请求?

    简短的回答:将 Firebase 访问令牌发送到验证令牌的 Spring 服务器。如果有效,则授予访问权限。否则返回 403 禁止。

    更详细的答案:

    在 Flutter 中进行身份验证

    FirebaseAuth.instance.signInWithPopup(GoogleAuthProvider())
    

    获取 JWT 访问令牌 IFF 登录成功。 (您可能更愿意使用 userCredential.user 而不是 currentUser)

    FirebaseAuth.instance.currentUser!.getIdToken();
    

    将令牌添加到您的 http-request 标头

    final response = await http.get(
      Uri.parse('https://example.com/example'),
      headers: {
        HttpHeaders.authorizationHeader: 'your_api_token_here',
      },
    );
    

    然后在服务器端验证令牌。阅读本文了解详情: https://firebase.google.com/docs/auth/admin/verify-id-tokens#java

    FirebaseToken decodedToken = FirebaseAuth.getInstance().verifyIdToken(idToken);
    String uid = decodedToken.getUid();
    

    您的 Spring 应用程序将能够验证令牌是否正确且尚未过期。

    高度建议仅通过 https 发送令牌!不要使用 http。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-20
      • 2021-05-02
      • 2023-02-17
      • 2019-10-21
      • 2018-06-14
      • 2018-05-13
      • 1970-01-01
      • 2019-08-05
      相关资源
      最近更新 更多