.net OpenID太复杂了吗?

.net OpenID太复杂了吗?,.net,openid,google-apps,.net,Openid,Google Apps,我开始严重怀疑OpenID社区,尽管它是有效的 我目前正在评估OpenID作为“this”站点的身份验证服务,虽然承诺很好,但我就是无法让它发挥作用。我真的迷路了 我请求SO社区在这里帮助我。给我答案,给我举个例子,这样我就可以按原意利用它了 我的情况非常典型。我想通过特定的谷歌应用程序域对用户进行身份验证。如果您有权访问此Google Apps域,则您有权访问我的web应用程序 我迷路的地方是所有的先决条件和依赖关系 什么是XRD 雅迪斯是什么 为什么我需要XRD和Yadis 在我的网站上部署

我开始严重怀疑OpenID社区,尽管它是有效的

我目前正在评估OpenID作为“this”站点的身份验证服务,虽然承诺很好,但我就是无法让它发挥作用。我真的迷路了

我请求SO社区在这里帮助我。给我答案,给我举个例子,这样我就可以按原意利用它了

我的情况非常典型。我想通过特定的谷歌应用程序域对用户进行身份验证。如果您有权访问此Google Apps域,则您有权访问我的web应用程序

我迷路的地方是所有的先决条件和依赖关系

  • 什么是XRD
  • 雅迪斯是什么
  • 为什么我需要XRD和Yadis
  • 在我的网站上部署OpenID身份验证需要做什么
  • 而且,这对我来说真的很重要

    当我登录SO时,我使用我的Google帐户。当我点击登录按钮时,我会看到这个确认页面。我授予SO使用我的谷歌账户凭证的权利


    不知怎的,谷歌知道是“Stackoverflow.com”在问我是否可以登录。我想知道我对这篇小文章的控制方式。我打算在几个不同的域上部署OpenID,但我更希望它们都能工作,而不必单独配置特殊参数,比如秘密API密钥等等。但是,我不确定这是OpenID的先决条件,还是Google提供的联合登录API的先决条件。

    听起来你真的很想调查一下——这是一个让开发人员(和用户)更容易使用他们喜欢的身份验证机制的解决方案,包括OpenID

    作为第三方身份提供商和您的网站之间的代理,RPX可以帮助您轻松地使用用户在Facebook、Google、Yahoo!上的现有帐户对其进行身份验证!,Twitter、MySpace、AOL、Windows Live/MSN/Hotmail或任何其他OpenID提供商


    为了实际回答您的问题(即忽略所有争论点),我正在使用为我的一个站点实施OpenID授权;这是非常琐碎的


    它只是一个.NET控件,您可以删除它,配置少量内容,然后让它链接到表单身份验证。很好。

    好的,你在一个标题下有很多问题。让我看看能不能把它分解一下

    XRD和Yadis:

    “Yadis”是OpenID的服务发现块的名称——它将您从“my OpenID is example.com”转换为“my OpenID的权威服务器位于OpenID.example.com/server,它支持带有AX扩展的v2”。XRD是保存该信息的XML模式

    (事实上,OpenID(我们通过没有公认的标准机构开发的标准)依赖于XRD(来自另一个正在进行的标准),这可能令人遗憾。我能说的是,当时这似乎是个好主意。)

    部署需要做什么?

    看约瑟夫·斯马尔的。天哪,已经2岁多了?然而,这仍然是相关的

    OpenID提供商如何识别您的站点(依赖方):

    这个小文本(例如“stackoverflow.com”)就是OpenID“realm”,它是您传递给提供者的一个参数,是您用来处理其响应的端点URL的严格子集。(因此,如果您告诉服务器将OpenID响应发送到server2.example.com/foobar,您的领域可以是example.com、server2.example.com或server2.example.com/foobar,但不能是server99.example.com。)

    秘密API密钥:

    通常,不需要获取带外密钥API密钥。对于通用OpenID提供程序,密钥仅通过标准OpenID关联机制发布


    现在你已经发现了一些OpenID提供者可能会认为有价值的特性,比如“我如何能以更友好的方式告诉用户他们登录的网站,而不是向他们展示URL摘录”或“我如何识别这个请求是真正来自RP的,我有某种契约关系”,但是这样的特性在OpenID2.0标准中是不存在的。

    我实际上已经找到了解决问题的方法,令人惊讶的是,它非常简单。我仍然不了解XRD和Yadis,但我很容易就利用了它

    你想要的,你正在寻找的是做OpenID“中继派对”的代码。这就是“你”作为OpenID提供者的消费者。您输入一个OpenID端点,瞧,您已经启用了站点的OpenID,这段代码在实践中说明了这一点

    // using DotNetOpenAuth
    var openid = new OpenIdRelyingParty();
    var response = openid.GetResponse();
    if (response == null)
    {
        // Google account end point (works fine)
        var googleID = "https://www.google.com/accounts/o8/id";
        // Google hosted account end point
        //  https://www.google.com/accounts/o8/site-xrds?hd=mydomain.com
        // I was unable to test this, but I was running my RP (this code)
        // from localhost and it's quite possible that a hosted account RP
        // has to return to the same domain.
        // It went fine, but crashed with a "Unable to resolve mydomain.com" error
        // once I logged in.
        openid.CreateRequest(googleID).RedirectToProvider();
    }
    else
    {
        switch (response.Status)
        {
            case AuthenticationStatus.Authenticated:
                // Success
                // to allow persistance across sessions
                // you'll have to track the "claimed identifier"
                // some OpenID providers allow you to get an email address through
                // extensions but this is not always possible.
                // the claimed identifier is typically your safest bet
                // and it's a big URL which uniquely identifies the guest
                // as a specific user, however, you know very little about this user
                // which is a good thing becuase you don't have to give out personal or
                // sensitive information to start using a service.
                break;
    
            default:
                // Something went wrong, check Status property
                break;
        }
    }
    
    当我弄明白这一点的时候,我从每一个规范中都得到了这样的印象:我应该拥有自己的“OpenID提供者”,这让我听起来像是应该处理帐户或流程的某个部分。实际上,我所要做的就是这样


    请求该URL,或者如果您收到响应中的OpenID请求。检查该请求是否包含有效的登录信息。

    我也遇到了这个问题。OpenID PHP库希望使用一个空白页面,该页面带有使用JavaScript自动提交的表单,但我选择使用HTTP头重定向,但Google的OpenID不会返回任何有用的数据。不知道这是否与您的问题有关,但我不确定您是否可以使用带有OpenID的Google Apps域帐户。我有两个Google Apps帐户和一个“普通”Google帐户,只有最后一个用于OpenID身份验证。如果有人知道如何将Apps for domains帐户成功用作OpenID,请告诉我。:)@calmh-我发现了一些非常有说服力的文档,您可以使用OpenID或OAuth对Google应用程序域进行身份验证,只要您为高级服务付费。但令人惊讶的是,我没有发现