我使用DotnetOpenAuth,我需要使用SetCallbackArgument传递一些数据,但问题是某些openId提供程序如 http://pip.verisignlabs.com/ http://clickpass.com/public/username 重定向到我的网站,查询字符串超过2048字符,IIS无法处理它。我得到404 - 找不到文件或目录。错误导致他们重定向太大。 在这种情况下我该怎么做?
答案 0 :(得分:0)
OpenID规范指出,过大的OpenID响应应使用表单POST而不是301重定向,这有助于避免此问题。我不知道verisign或clickpass是否忽略了规范的那一部分。但一般来说,你的回调参数应该保持简短以避免这种问题。当然,如果你的回调参数非常大,它永远不会被期望工作,因为回调参数必须始终在查询字符串中。
通常,如果您希望在用户返回时提供大量数据,则可以将其存储在数据库,用户会话或cookie中,并且只在回调参数中存储对该数据的小引用。
请记住,回调参数中的任何内容都要经过用户,任何第三方检查,如果HTTPS不用于整个事情,甚至可能被篡改。 DNOA为回调参数提供可选的篡改保护,但不保密。