【问题标题】:Server side OAuth2 in DartDart 中的服务器端 OAuth2
【发布时间】:2019-05-21 21:48:07
【问题描述】:

有很多关于如何在 Dart 客户端(在浏览器中)使用 OAuth2 的示例,但我找不到任何关于如何在服务器端实现身份验证的示例。

例如,对于 Node.JS,有类似 PassportJS 的框架,但我找不到 Dart 类似的框架。

作为一个用例可能不是 SPA 项目,我需要提供 Google/Facebook/Twitter/etc 的登录信息

任何人都可以使用原始 dart:io HttpServer 或任何服务器端框架(如 StartBloodless )提供任何 sn-p 吗?

【问题讨论】:

标签: oauth-2.0 dart google-oauth


【解决方案1】:

描述说客户端库,但它只适用于“dart:io”,这意味着它是用于服务器的 http://pub.dartlang.org/packages/oauth2

http://pub.dartlang.org/packages/google_oauth2_v2_api(客户端和服务器)

【讨论】:

  • 不幸的是,第一个库依赖于客户端 - 它显示弹出窗口并处理客户端回调。对于服务器端 OAuth2,您需要要求服务器对某个 URL(您可以配置)进行回调,因此有相当多的服务器端特定代码来支持处理回调。即使在 Google Developers Console 中注册期间,客户端和服务器端身份验证凭据的对话框也完全不同。
  • 这很奇怪,因为它在自述文件中声明它需要 'dart:io',因此不能在客户端上使用。我在这里问过这个问题groups.google.com/a/dartlang.org/forum/#!topic/web/LKkhs2TPJjo 当我收到反馈时,我会及时更新这个答案。
  • 我知道客户端和服务器上的 oauth 是不同的,第一个库肯定是服务器端的。 (我猜您不想构建 Oauth 提供程序,但希望让客户端使用其他 oauth 提供程序在您的服务器上进行身份验证。)
【解决方案2】:

Angel 框架还有一个完整的 OAuth2 实现: https://github.com/angel-dart/oauth2

包含的代码抽象了 OAuth2 传输本身;存储、数据库等由您选择。

【讨论】:

    【解决方案3】:

    Aqueduct (http://aqueduct.io/docs/tut/oauth2/) 在 dart 中有完整的 oauth2 实现。

    不幸的是,它依赖 PostgreSQL 作为 oauth2 令牌的存储库。这意味着每个请求至少有一个数据库访问权限来检索令牌。

    但是资源在那里,你可以尝试更好的东西....

    【讨论】:

    • 有一个接口可以在 Aqueduct 中为 OAuth 2.0 实现不同的存储机制(或使用无存储机制)。这个接口有一个使用 PostgreSQL 提供的实现;这可以扩展到成千上万的用户而没有问题。如果你想管理自己的存储,实现这个类:pub.dartlang.org/documentation/aqueduct/latest/aqueduct/…
    猜你喜欢
    • 1970-01-01
    • 2018-10-17
    • 2014-11-18
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 2020-09-12
    相关资源
    最近更新 更多