使用 oAuth 或其他方式实施访问

2024-04-21

我正在尝试想办法向其他第三方网站开放网站及其部分数据库,类似于 Twitter 让网络应用程序连接到其数据库以检索数据并可能存储数据的方式。

我最初的研究让我想到了 oAuth(或者是 openID?)。

我需要做的是让第三方网站登录网站上的用户帐户,但只能读写属于自己的数据,而无法触及属于其他第三方网站的数据?

我对 oAuth 的细节有点模糊。我是否需要创建某种 API 或者 oAuth 是我唯一需要实现的东西?正如您所看到的,我不确定如何执行此操作,因此专家的任何解释都会有所帮助。

如果我实施 oAuth,其他第三方网站是否能够访问该网站的数据?

我可以让其他第三方网站将用户注册到主网站,而用户不必访问主网站吗?有人认为这是一个坏主意吗?是/否,为什么?

oAuth 如何帮助我确保第三方网站不会读取/写入/更改与其他第三方网站相关的用户数据。

我确信这比我想象的要容易,但我是 oAuth 的新手,所以图片还不清楚。


首先,我们要明确 OAuth 和 OpenID 是两个不同的东西。 OpenID 旨在用于仅认证。 OAuth 用于身份验证和授权。在这种情况下,授权是指客户端应用程序是授权的访问和更新与经过身份验证的用户关联的数据。

我需要做的是让第三方网站登录网站上的用户帐户,但只能读写属于自己的数据,而无法触及属于其他第三方网站的数据?

如果每个第三方网站上存储的数据与您的身份验证服务器上存储的数据互斥,那么您可能需要坚持使用 OpenID。

但是,如果您希望第三方网站更新应与所有其他第三方网站共享的用户信息(即名字、姓氏、街道地址、信用卡信息等),那么您可能需要与 OAuth 一起使用。我知道 OpenID 规范有一个扩展,允许此类事情(实际上,您可以将其调整为您自己的实现),但从一般意义上来说,此类内容属于 OAuth。

我对细节有点模糊 oAuth。我需要创建某种类型吗 API 还是 oAuth 是我唯一的东西 需要实施吗?

除了请求令牌和使用 OAuth 服务器授权客户端应用程序的初始详细信息之外,您还必须实现其他方法来检索和更新有关经过身份验证的用户的信息。例如,Twitter 要求您的应用程序经过特定用户的身份验证并有权更新用户的状态。除了基本 OAuth 实现之外,更新状态方法也是其 API 的一部分。

如果我实现 oAuth,其他第三个会吗 当事人网站能够访问数据 从网站上?有谁认为 这是一个坏主意?是/否,为什么?

这些网站将只被允许访问已通过您的 OAuth 服务器进行身份验证的用户的数据and授权该网站访问其数据。但是,只有那些拥有有效消费者密钥的网站才能请求正确的令牌来开始 OAuth 会话。因此,只有您授权的网站才被允许与您的服务器交互。

这些代币总是有可能被劫持会话固定 http://oauth.net/advisories/2009-1/。但这种担忧不应阻止您实施 OAuth 服务。这并不意味着不用担心。只是不要让它成为障碍。

我可以让其他第三方网站将用户注册到主网站,而用户不必访问主网站吗?

不符合 OAuth 定义的当前规范。 OAuth 背后的想法是您的用户在 OAuth 服务器上注册。您的第三方客户端使用此服务器作为身份验证点。然而,这并不意味着如果应用程序有某种“主”帐户可供登录,您就不能实现某种 API 来注册用户(尽管这是它自身的安全风险)。只是不推荐。

oAuth 如何帮助我确保第三方网站不会读取/写入/更改与其他第三方网站相关的用户数据?

仅仅因为您使用 OAuth 并不意味着您的第三方网站无法在自己的数据存储中存储数据。 Flickr 和 Twitter 都提供 OAuth 服务,但两者都没有在各自的服务器上存储彼此的信息(Twitter 的数据库中不存储 flickr 照片)。

只要您没有在 OAuth 服务器上存储特定于每个应用程序的信息,就不会有问题。请记住,OAuth 服务器用于对用户进行身份验证并存储应由所有应用程序共享的基本信息。我在此重申,如果您只想验证用户身份,那么请坚持使用 OpenID。

Edit

是否可以对权限进行分段,使得用户授权站点A时,不授权给自己的完整账户,而只授权其访问自己账户上的数据? oAuth 可以这样做吗?

在您的实施中,您可以。这将是检查与用于访问该 OAuth 端点的访问令牌关联的消费者密钥的问题。请记住,对 API 授权部分的每次调用都必须包含访问令牌。因此,如果您想将该端点锁定到特定应用程序,您可以通过访问令牌和消费者密钥来检查它,这是有道理的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 oAuth 或其他方式实施访问 的相关文章

随机推荐

  • 更改 Eclipse 启动配置中的默认“要运行的程序”

    我时不时地使用以下命令从 Eclipse 中启动 JUnit 测试 运行方式 gt JUnit 插件测试 默认情况下 Eclipse 假设您正在运行需要工作台的东西 并在启动配置的 Main 部分中进行选择 LaunchConfig gt
  • 如何减少 Selenium 中 NoSuchElementException 的等待时间?

    在某些情况下 我知道元素不会显示 但它等待了约 30 秒 如何减少等待时间NoSuchElementException硒 示例代码 String name try name driver findElement By xpath XPath
  • Qt Ui 命名空间

    命名空间有什么意义Ui这是Qt自动生成的吗 这两个命名空间相同吗 在第一个中 其中包含 MainWindow 类的前向声明ui MainWindow h为什么它没有声明为class Ui MainWindow 编译器如何知道 MainWin
  • ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: 错误: 表上的更新或删除违反了外键约束

    有一个非常相似的问题SO https stackoverflow com questions 47624334 error update or delete on table users violates foreign key const
  • 模板中带有参数的函数。姜戈

    在我的模板中 我显示用户关注的用户列表 我希望用户能够通过按钮删除他关注的用户之一 我有一个删除关系的函数remove relationship 这是我的 models py 中的函数 class UserProfile models Mo
  • 写入 Core Data 时创建新对象

    我有一个具有一些表单字段的应用程序 提交表单后 它将数据写入我的核心数据对象 但是 当再次提交表单时 它会覆盖现有数据而不是附加到它 这正是我想要发生的情况 guard let appDelegate UIApplication share
  • php 和 simpleXml - 如何更改节点内容

    我正在尝试使用 simpleXML 更改 XML 文件中节点的内容 我知道新节点内容的变量包含正确的内容 但由于某种原因 文件在保存时没有更改 我可能缺少一些基本的东西 因为我是 simpleXML 的新手 这是整个 php 脚本
  • Android 删除接近警报

    我正在开发处理接近警报的应用程序 我可以添加接近警报 但无法删除这些接近警报 我已经在手机和虚拟设备上尝试过我的代码 但无法删除它们 这是我的代码 将位置保存到数据库并添加接近警报的活动 saveButton setOnClickListe
  • 如何处理同时碰撞以使处理顺序无关紧要?

    假设有3个球同时碰撞 我发现解决冲突的顺序会对最终结果产生影响 这当然没有意义 为了解释和简单起见 考虑 1D 中的 3 个球 质量相同 弹性碰撞 顶部的数字是速度 箭头是方向 假设它们当前都互相接触 即发生碰撞 gt 2 gt 1 lt
  • Pydev 中的 Django 会产生多个进程?

    我在 Eclipse 中的 PyDev 中设置了我的项目 每当我调试我的项目时 一切都很顺利 但是一旦我尝试重新启动 Django 服务器 它就会生成一个额外的 runserver 进程 阻塞我用于服务器的端口 8000 有没有解决方法可以
  • Nginx 位置“不等于”正则表达式

    我该如何设置locationNginx 中的条件是否响应任何不等于列出的位置 I tried location dir1 file2 php rewrite http example com 1 permanent 但它不会触发重定向 它只
  • Rails:如何为 ruby​​ 模块编写测试?

    我想知道如何为混合到几个类中的模块编写单元测试 但不太知道如何去做 我是否通过在包含它们的类的测试文件之一中编写测试来测试实例方法 似乎不正确 或者您可以以某种方式将所包含方法的测试保留在特定于模块的单独文件中吗 同样的问题也适用于类方法
  • VBO - 没有指数化的指数化

    我正在尝试将 VBO 与元素数组缓冲区一起用于我的三角形 如下所示 glBindBuffer GL ARRAY BUFFER g Buffer 0 glVertexPointer 3 GL FLOAT 0 BUFFER OFFSET 0 g
  • 如何使用 python-decorator 包来装饰类方法?

    我有一个装饰器 我想用它来装饰类方法 在下面的示例中 mydec 装饰器本身可以正常工作 但是在使用 help 或 pydoc 时它不会保留函数签名 为了解决这个问题 我研究了使用 decorator python decorator 包
  • GZipStream:为什么我们在压缩后转换为base 64?

    我只是在查看用于压缩字符串的代码示例 我发现使用 GZipStream 类就足够了 但我不明白为什么我们必须将其转换为 Base 64 字符串 如示例所示 using System IO Compression using System T
  • 无法在 Java 中使用 List 类进行向下转换 [重复]

    这个问题在这里已经有答案了 我一直在寻找这个问题的答案 但没有成功 我的问题是为什么不能使用泛型进行向下转型 我有一个名为 Job 的类 并扩展了一个名为 Model 的类 Job extends Model 现在 我从生成模型列表的可重用
  • 手动生成 .appxsym 和 .appxupload 用于 Windows 应用商店应用程序崩溃分析是否安全?

    我们有一个带有手动打包过程的应用程序 MakeAppx exe 我们希望将此应用程序发布到商店 包括公共符号文件 以便我可以下载 cab 进程转储文件进行崩溃分析 如这里描述的 http msdn microsoft com en us l
  • Bower:安装 2 个版本的 jQuery

    我将如何安装 2 个版本的 jQuery使用凉亭 我想要 v2 0 以及 1 9 1 来支持浏览器回退 我遇到的问题是如果你跑bower install jquery 1 9 1 jquery 2 0 0第一个版本被第二个版本覆盖 因为它们
  • 在 UIImage imageNamed 中使用外部图像

    我正在从网上下载两张图片 Apple png 和 电子邮件受保护 cdn cgi l email protection 我想用 UIImage imageNamed Apple png 因此它可以使用内置功能来检测是否应该显示 Apple
  • 使用 oAuth 或其他方式实施访问

    我正在尝试想办法向其他第三方网站开放网站及其部分数据库 类似于 Twitter 让网络应用程序连接到其数据库以检索数据并可能存储数据的方式 我最初的研究让我想到了 oAuth 或者是 openID 我需要做的是让第三方网站登录网站上的用户帐