Joh*_*ren 14 .net openid google-apps
尽管它有效,但我开始严重怀疑OpenID社区.
我正在将OpenID评估为"这个"网站的身份验证服务,虽然承诺很好,但我无法让它工作.我真的迷路了.
我要求SO社区帮助我.给我答案并向我展示示例,以便我可以按照预期的方式利用它.
我的场景非常典型.我想通过特定的Google Apps域对用户进行身份验证.如果您有权访问此Google Apps域,则可以访问我的Web应用程序.
在我迷路的地方,涉及所有先决条件和依赖关系.
而且,这对我来说非常重要.
当我登录SO时,我使用我的Google帐户.当我点击登录按钮时,我会看到此确认页面.我授予SO使用我的Google帐户凭据的权利.
不知何故,Google知道它是"Stackoverflow.com",它问我是否可以登录.我想知道我对这个小文本有什么样的控制方式.我打算在几个不同的域上部署OpenID,但我更愿意,如果它们都可以工作,而不必单独配置特殊参数,例如秘密API密钥,什么不是.但是,我不确定这是否是OpenID的先决条件,即Google提供的联合登录API.
要实际回答你的问题(即无视所有论证点),我就像使用DotNetOpenAuth来为我的一个网站实施OpenID授权一样.而且这是非常微不足道的.
它只是一个.NET控件,你放弃它,配置很少的东西,然后让它链接到Forms身份验证.相当不错.
我实际上找到了解决问题的方法,令人惊讶的是,它非常简单。我仍然不理解 XRDS 和 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;
}
}
Run Code Online (Sandbox Code Playgroud)
当我弄清楚这一点时,我从每个规格中得到了印象。在那里,我应该托管我自己的“OpenID 提供商”,这听起来像是我应该处理帐户或流程的某些部分。事实上我所要做的就是这个。
请求该 URL,或者如果您收到 OpenID 请求作为响应。检查该请求是否包含有效的登录信息。
| 归档时间: |
|
| 查看次数: |
781 次 |
| 最近记录: |