在我的项目中,我使用库DotNetOpenAuth中的OpenIdProviderWebForms和OpenIdRelyingPartyWebForms。
验证是通过用户对域服务器的请求完成的。
登录我的用户的格式为test_dm \ username和[email protected]
提供者的授权是成功的,但是当openid.GetResponse();我收到错误“登录失败(发送直接消息或获得响应时出错)。”。
正如我发现的那样,问题出现是因为用户名中的字符.
和/!
(我用/替换了/!)。
OpenID从不在两个网站之间传输用户名。什么代码(在您的网络应用程序中可能)负责将用户名放在URL中?我建议您在将其放入URL之前使用Uri.EscapeDataString
来转义用户名。