我是否应该根据协议前缀来区分OpenID?http与https

我是否应该根据协议前缀来区分OpenID?http与https,http,https,openid,usability,Http,Https,Openid,Usability,我已经为我的ASP.NET应用程序实现了简单的OpenID支持。然而,我最近意识到,实现正在处理http://johndoe.example.com/与https://johndoe.example.com 这导致相当多的用户感到困惑。我不知道现在该怎么办这是错误还是功能? 实际上,我可以将此行为视为一个特性:如果用户指定HTTPS,用户可能不希望系统首先接受HTTP AUTH。 另一方面:如果用户完全出于无知而指定HTTPS(临时web访问者对“S”部分的目的一无所知),那么拒绝它的身份验证尝

我已经为我的ASP.NET应用程序实现了简单的OpenID支持。然而,我最近意识到,实现正在处理
http://johndoe.example.com/
https://johndoe.example.com

这导致相当多的用户感到困惑。我不知道现在该怎么办这是错误还是功能?

实际上,我可以将此行为视为一个特性:如果用户指定HTTPS,用户可能不希望系统首先接受HTTP AUTH。 另一方面:如果用户完全出于无知而指定HTTPS(临时web访问者对“S”部分的目的一无所知),那么拒绝它的身份验证尝试是令人困惑的


什么是最佳实践?

理论上,http和https身份可能不同。实际上(正如提供者在现实世界中实现的那样),它们不应该这样


StackOverflow不区分和,因此解决方案可能适用于99%的场景。

是-它们完全不同,应该如此对待


对OP的建议是始终使用https,但(目前)情况并非如此。

你一针见血:“如果用户指定https,用户可能首先不希望系统接受HTTP身份验证。”一些OP只提供https标识符,包括Yahoo和Google,我相信。这是安全要求。如果HTTP和HTTPS标识符被视为等效的,那么HTTPS提供的安全性并不比HTTP更高,因此容易受到DNS中毒的攻击,这相当于用户身份欺骗(读:被盗身份)。将它们视为不同的标识是非常重要的。同等对待它们是错误的(如果这是真的)。见史蒂文的答案。