下午把OpenId尝试了下,可以用了,上一下混乱的代码

铜臂阿铁木 2012-04-26 05:59:05
测试的提供商是myopenid
代码很乱。发上来做个记录。




using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Net;
using System.Text;
using System.IO;

namespace MyOpenIdRP
{
public partial class Login : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{

WebRequest requ = WebRequest.Create("https://www.myopenid.com/server");
requ.Method = "POST";
requ.ContentType = "application/x-www-form-urlencoded";
StringBuilder builder = new StringBuilder();
//HtmlForm f = new HtmlForm();
//f.ID = "finalForm";
//f.Method = "POST";
//f.Action = "https://www.myopenid.com/server";
//f.EnableViewState = false;
// f.Controls.Add(ProvideHiddenInput("openid.mode","check_authenticate"));


Response.Write("==============================================Query String Start=======================<br/>");
foreach(string str in Request.QueryString.AllKeys)
{
Response.Write(string.Format("[{0}]: {1} <br/>",str,Request.QueryString[str]));
if (str == "openid.mode")
{
//f.Controls.Add(ProvideHiddenInput(str, "check_authentication"));
builder.AppendFormat("{0}={1}", str, "check_authentication");
builder.Append('&');
}
else
{
//f.Controls.Add(ProvideHiddenInput(str, Request.QueryString[str]));
builder.AppendFormat("{0}={1}", str, Request.QueryString[str]);
builder.Append('&');
}
}

Response.Write("==============================================Query String Ended=======================<br/>");
Response.Write("<br/><br/>");
Response.Write("==============================================Params Start=======================<br/>");
foreach (string str in Request.Params.AllKeys)
{
Response.Write(string.Format("[{0}]: {1} <br/>", str, Request.Params[str]));
}

byte[] formData = Encoding.UTF8.GetBytes(builder.ToString());
requ.GetRequestStream().Write(formData,0,formData.Length);
WebResponse resp = requ.GetResponse();
StreamReader reader = new StreamReader(resp.GetResponseStream());
Response.Write("====================================authenticate result========================<br/>");
Response.Write(reader.ReadToEnd().Contains("is_valid:true"));
}

private HtmlInputHidden ProvideHiddenInput(string idname,string value)
{
HtmlInputHidden hidden = new HtmlInputHidden();
hidden.ID = idname;
hidden.Attributes.Add("value", value);
return hidden;
}
}
}


...全文
133 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
种草德鲁伊 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

这个是干嘛呢
单点登陆吗?

如果是的话,有点不安全呢
[/Quote]

是用别人提供的帐号在你的网站登录。
铜臂阿铁木 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

这个是干嘛呢
单点登陆吗?

如果是的话,有点不安全呢
[/Quote]

安全的。因为最后的验证结果并不是传送的,而是服务器展示,无法篡改,并且一次请求两次握手一次验证。

OpenID……好吧,你百度都能找到的东西。
anzhiqiang_touzi 2012-04-26
  • 打赏
  • 举报
回复
这个是干嘛呢
单点登陆吗?

如果是的话,有点不安全呢
铜臂阿铁木 2012-04-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

呵呵,恭喜,顺便接分
[/Quote]
技术贴这么回复可能会被删的啊。。。。
铜臂阿铁木 2012-04-26
  • 打赏
  • 举报
回复
直接是复制可用的。很乱。。。不好意思了。

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧