Asp.net mvc 使用MVC对Google Apps OpenID进行DotNetOpenAuth身份验证
我正在尝试单点登录。目前,最可行的解决方案是用户输入我网站上的详细信息,然后发送到goggle应用程序进行验证 我正在使用dotnetopenauth发送和接收请求 这意味着,如果存在谷歌应用程序登录cookie,它将不考虑这些cookie 已经有几个问题涉及到这一点。但似乎没有人能回答这个问题 这是当前代码(请注意,我限制了可能用于我的域的google应用程序的域): 此代码与正常模式之间的唯一区别是以下几行:Asp.net mvc 使用MVC对Google Apps OpenID进行DotNetOpenAuth身份验证,asp.net-mvc,dotnetopenauth,Asp.net Mvc,Dotnetopenauth,我正在尝试单点登录。目前,最可行的解决方案是用户输入我网站上的详细信息,然后发送到goggle应用程序进行验证 我正在使用dotnetopenauth发送和接收请求 这意味着,如果存在谷歌应用程序登录cookie,它将不考虑这些cookie 已经有几个问题涉及到这一点。但似乎没有人能回答这个问题 这是当前代码(请注意,我限制了可能用于我的域的google应用程序的域): 此代码与正常模式之间的唯一区别是以下几行: openid.DiscoveryServices.Clear();
openid.DiscoveryServices.Clear();
openid.DiscoveryServices.Insert(0, GoogleAppsDiscovery); // it should be first if we don't clear the other discovery services
这些行正确设置OpenId以处理来自google应用程序的响应
正如我所说,只有当用户首先输入他/她的电子邮件地址时,这才有效。我找不到自动重定向到谷歌应用程序登录的方法
在普通的gmail中,如果我将用户发送到:而不是处理输入,谷歌将把用户输入的登录详细信息放在他们的网站上,而不是我的网站上。如果有cookie,它会跳过这一步,并将用户直接返回到我的站点,而不必大惊小怪
我希望我的网站在谷歌应用程序登录时也有同样的行为
此外,如果我能将登录限制到我的谷歌应用程序域,那就太好了
有两个URL四处浮动:
或
但即使有我前面指出的代码行,dontnetopenauth也拒绝在任一地址看到openid端点
甚至dotnetaopenauth for webforms中的示例也需要用户输入
任何帮助都将不胜感激。您不能没有用户输入,也不能让任何谷歌应用程序域为用户工作,因为用户可能会登录到15个谷歌应用程序域帐户,然后没有人知道用户要使用哪个帐户登录 但既然你说你希望他们只能用你自己的域名登录,那就简单了。跳过询问用户,假装“example.com”是用户输入,并将其传递到DotNetOpenAuth。它不必是电子邮件地址。无论如何,只使用域名 也就是说,这并不保证其他提供商或域的任何人都不能登录您的站点。为此,您需要过滤返回的
iaauthenticationresponse
,并确保其Provider
属性与您想要允许的值匹配。否则,“未经请求的断言”仍然会出现
openid.DiscoveryServices.Clear();
openid.DiscoveryServices.Insert(0, GoogleAppsDiscovery); // it should be first if we don't clear the other discovery services