jjzjj

php - 跨域单一选择性登录

coder 2024-04-09 原文

它不是我正在寻找的明确跨域 session ,但它是解释我想要什么的最简单方法。

我有一个创建网站的系统。 这些网站托管在许多不同的服务器上。

用户可以创建自己的帐户,然后可以创建许多网站。 他们可以创造

www.mysite.com 子域名.mysite.com 并创建许多不同的网站。

有时,网站彼此完全不同,但有时,这些网站实际上联系紧密,可能应将它们视为同一网站。

例如: (完全不同的领域) mysite-news.com网站 mysite-blog.com 或(相同域,不同子域) 新闻.mysite.com 博客.mysite.com

我需要的是一种让用户在他们想要的地方创建排序联合的方法,通过单击复选框允许他们允许跨站点登录。我无法更改配置,除非它是永久更改并且不会影响其他站点,因为 1000 个站点将受到影响。

您认为最好的支持方式是什么? OpenID、SSO?

我需要一些对网站来说很简单的东西来创建一个“联盟”,然后允许他们的登录是跨域的。如果有人想加入,他们可以加入。

最佳答案

OpenID 提供了一些不错的功能,但不幸的是,您在标准 OpenID 实现中找不到您正在寻找的跨域行为。 OpenID 的主要设计原则之一是,提供商在未经用户明确同意的情况下不得披露有关用户的任何信息*,因此任何信誉良好的 OpenID 提供商都绝不会告诉 mysite-news.com 您已经登录到 mysite-blog .com,无需征得用户同意。

[用技术术语来说,这里发生的是 mysite-news.com 和 mysite-blog.com 在概念上处于相同的安全“领域”,但 OpenID 通过 URL 模式识别领域,并且由于它们在他们不匹配的不同域。]

而这并不能为您提供所需的用户体验。以前的一些答案可以很好地概述您在此处需要的系统类型:

简而言之,您将在 login.mysite.com 上设置某种身份验证服务,以回答来自 mysite-news.com 和 mysite-blog.com 的查询。您仍然可以通过多种方式利用其中的 OpenID。

  1. 那里描述的重定向到登录并返回签名 token 的流程正是 OpenID 所做的。因此,您仍然可以使用 OpenID 实现来完成所有管理签名 token 和重放保护的工作,您的客户站点只需跳过 OpenID 的初始“发现”部分,并始终将用户重定向到 login.mysite.com 提供商。 login.mysite.com 可以跳过“我是否信任 mysite-blog.com”这一步,因为它是一个特殊用途的提供商,可以拥有自己的网站白名单,始终与之合作。 OpenID 在这里纯粹是幕后的,用户永远不会知道 OpenID 以某种方式参与其中。

  2. login.mysite.com 反过来可以使用 OpenID 要求用户根据其 OpenID 提供商(无论是 Google 或 Yahoo 还是像 myOpenID 这样的专家)进行身份验证。从那里它看起来像一个标准的 OpenID 登录,你会得到所有的好处,缺点是你的登录重定向链变得更长(并且相应地更慢)。他们是休息时间。

祝你好运。这是一个经常出现的问题,我还没有找到一个非常好的引用实现,我可以向人们指出,所以如果你找到好的东西,请回来告诉我们。

最后,obligatory link to Matasano Chargen's screenplay on the subject .

[*] 最近的 Google Buzz 惨败很好地提醒了您,当您让用户惊讶于他们的信息正在与谁共享时会发生什么。

关于php - 跨域单一选择性登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2261300/

有关php - 跨域单一选择性登录的更多相关文章

  1. ruby - Rails 3 的 RGB 颜色选择器 - 2

    状态:我正在构建一个应用程序,其中需要一个可供用户选择颜色的字段,该字段将包含RGB颜色代码字符串。我已经测试了一个看起来很漂亮但效果不佳的。它是“挑剔的颜色”,并托管在此存储库中:https://github.com/Astorsoft/picky-color.在这里我打开一个关于它的一些问题的问题。问题:请建议我在Rails3应用程序中使用一些颜色选择器。 最佳答案 也许页面上的列表jQueryUIDevelopment:ColorPicker为您提供开箱即用的产品。原因是jQuery现在包含在Rails3应用程序中,因此使用基

  2. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  3. ruby-on-rails - Rails 单选按钮 - 模型中多列的一种选择 - 2

    我希望用户从一个模型的三个选项中选择一个。即我有一个模型视频,可以被评为正面/负面/未知目前我有三列bool值(pos/neg/unknown)。这是处理这种情况的最佳方式吗?为此,表单应该是什么样的?目前我有类似的东西但显然它允许多项选择,而我试图将它限制为只有一个..怎么办? 最佳答案 如果要使用字符串列,让我们说rating。然后在你的表单中:#...#...它只允许一个选择编辑完全相同但使用radio_button_tag: 关于ruby-on-rails-Rails单选按钮-模

  4. ruby-on-rails - CarrierWave - PDF - 只选择第一页 - 2

    我的Rails应用程序中安装了carrierwave。但是,当用户上传多页pdf时,我只希望应用程序获取文档中的第一页并将其转换为jpeg。这可能吗?用什么命令?这是我的uploader。#encoding:utf-8classImageUploader[200,300]##defscale(width,height)##dosomething#end#Createdifferentversionsofyouruploadedfiles:version:thumbdoprocess:resize_to_fill=>[150,210]process:convert=>:jpgdefful

  5. ruby-on-rails - ActiveAdmin 自定义选择过滤器下拉名称 - 2

    对于用户模型,我有一个过滤器来检查用户的预订状态,该状态由整数值(0、1或2)表示。UserActiveAdmin索引页上的过滤器是通过以下代码实现的:filter:booking_status,as::select然而,这会导致下拉选项为0、1或2。当管理员用户从下拉列表中选择它们时,我更愿意自己将它们命名为“未完成”、“待定”和“已确认”之类的名称。有没有办法在不改变booking_status在模型中的表示方式的情况下做到这一点? 最佳答案 假设booking_status是模型中的枚举字段,您可以使用:过滤器:booking

  6. ruby - 我可以使用 RVM 为所有用户维护单一版本的 Ruby 吗? - 2

    我喜欢RVM。我意识到它的主要用例是让不同的用户在不同版本的Ruby之间切换。但是假设我正在将Rails应用程序部署到服务器,并且我只想运行单个版本的Ruby。特别是,我想要1.9.2,用RVM安装它很容易,但没有它就很痛苦。有没有一种方法可以让我说“我希望这是所有用户的规范Ruby安装”(连同它的所有gem),而不必手动创建一堆符号链接(symboliclink)并在每次更新到更新时更改它们Ruby版本? 最佳答案 以root身份安装RVM并执行sudorvmuse1.9.2--default。任何采购/usr/local/rvm

  7. ruby-on-rails - 多次选择一个随机数,但绝不会两次选择相同的随机数 - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:HowdoIgeneratealistofnuniquerandomnumbersinRuby?我想做的事:Random.rand(0..10).timesdoputsRandom.rand(0..10)end但如果随机数已经显示过,则无法再次显示。如何最轻松地做到这一点?

  8. ruby - 使用 Ruby 和 Mechanize 登录网站 - 2

    我需要从站点抓取数据,但它需要我先登录。我一直在使用hpricot成功地抓取其他网站,但我是使用mechanize的新手,我真的对如何使用它感到困惑。我看到这个例子经常被引用:require'rubygems'require'mechanize'a=Mechanize.newa.get('http://rubyforge.org/')do|page|#Clicktheloginlinklogin_page=a.click(page.link_with(:text=>/LogIn/))#Submittheloginformmy_page=login_page.form_with(:act

  9. ruby - mixin方法名冲突时如何选择调用方法? - 2

    当你在类中包含方法名冲突的模块时,它会使用类定义的方法。有没有办法选择我想运行的?moduleBdefself.hello"helloB"endendclassAincludeBdefself.hello"helloA"endendA.hello#=>thisprints"helloA",whatifIwant"helloB"? 最佳答案 Ben,当你在Ruby中调用一个方法(比如hello)时,会发生以下情况:如果接收者的特征类有一个名为hello的方法,它将被调用。如果不是:如果接收者的类有一个名为hello的实例方法,它将被调

  10. ruby - 更快的 n 选择 k 来组合数组 ruby - 2

    在尝试解决“网格上的路径”问题时,我编写了代码defpaths(n,k)p=(1..n+k).to_ap.combination(n).to_a.sizeend代码工作正常,例如ifn==8andk==2代码返回45,这是正确的路径数。但是,当使用较大的数字时,代码非常慢,我正在努力想出如何加快这个过程。 最佳答案 与其构建组合数组只是为了计算它,不如编写function定义组合的数量。我敢肯定还有包含此功能和许多其他组合函数的gem。请注意,我使用的是gemDistribution对于Math.factorial方法,但这是另一种

随机推荐