DotNetOpenAuth

上传人:大米 文档编号:457223811 上传时间:2023-11-17 格式:DOC 页数:11 大小:379.50KB
返回 下载 相关 举报
DotNetOpenAuth_第1页
第1页 / 共11页
DotNetOpenAuth_第2页
第2页 / 共11页
DotNetOpenAuth_第3页
第3页 / 共11页
DotNetOpenAuth_第4页
第4页 / 共11页
DotNetOpenAuth_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《DotNetOpenAuth》由会员分享,可在线阅读,更多相关《DotNetOpenAuth(11页珍藏版)》请在金锄头文库上搜索。

1、DotNetOpenAuth本身提供了一SSOProvider示例,但是只有WebForm项目的,没有MVC的SSOProvider示例,本文提供MVC的SSOProvider实现方法,再顺便讲讲个人对于使用DotNetOpenAuth的一点点小体会。一.SsoOP SSO的服务提供者1.建立SsoOP项目,我使用了Razor视图引擎,添加DotNetOpenAuth.dll引用。下载地址见上面的源码托管地址.2.设置web.config文件里面的配置信息,详情请见本文下方示例程序。3.创建OpenIdController.cspublicclassOpenIdController : Con

2、trollerinternalstaticOpenIdProvider openIdProvider = newOpenIdProvider();publicActionResult Identifier()if(User.Identity.IsAuthenticated & ProviderEndpoint.PendingAuthenticationRequest != null)Util.ProcessAuthenticationChallenge(ProviderEndpoint.PendingAuthenticationRequest);if(ProviderEndpoint.Pend

3、ingAuthenticationRequest.IsAuthenticated.HasValue)ProviderEndpoint.SendResponse();if(Request.AcceptTypes.Contains(application/xrds+xml)returnnewTransferResult(/OpenId/Xrds);returnView();ValidateInput(false)publicActionResult Provider()varrequest = openIdProvider.GetRequest();if(request != null)if(re

4、quest.IsResponseReady)returnopenIdProvider.PrepareResponse(request).AsActionResult();ProviderEndpoint.PendingRequest = (IHostProcessedRequest)request;varidrequest = request asIAuthenticationRequest;returnUtil.ProcessAuthenticationChallenge(idrequest);returnView();publicActionResult AskUser()returnVi

5、ew();publicActionResult Xrds()returnView();OpenIdController是SsoRP(SSO消费者)使用OP的入口点,其中Provider是提供登录服务的Action,这点需要在后面提到。4.创建Xrds.cshtml视图Layout = null;Response.ContentType = application/xrds+xml;var uri = new Uri(Request.Url, Response.ApplyAppPathModifier(/OpenId/Provider).ToString();http:/ = null;Resp

6、onse.ContentType = application/xrds+xml;varuri1 = newUri(Request.Url, Response.ApplyAppPathModifier(/OpenId/Provider).ToString();varuri2 = newUri(Request.Url, Response.ApplyAppPathModifier(/OpenId/Provider).ToString();http:/ WebForm页面中,有人可能用过Server.Transfer方法,该方法MSDN中的解释是:对于当前请求,终止当前页的执行,并使用指向一个新页的指

7、定 URL 路径来开始执行此新页。一般情况下似乎和Redirect方法的作用很像,但是某些特殊场合中,区别是大大的,是什么呢?Redirect是执行客户端重定向,而Transfer是不用客户端重定向的,应该就是HTTP的302状态吧。在使用DotNetOpenAuth的过程中,很多时候也许是基于安全的考虑,OpenId是不允许使用重定向了的请求,不然就会出错。在MVC中有一个RedirectToAction方法很好用,却没有一个TransferToAction方法,甚至没有TransferResult类型,所以不得不自已弄一个。publicclassTransferResult : Redir

8、ectResultpublicTransferResult(stringurl): base(url)publicoverridevoidExecuteResult(ControllerContext context)varhttpContext = HttpContext.Current;httpContext.RewritePath(Url, false);IHttpHandler httpHandler = newMvcHttpHandler();httpHandler.ProcessRequest(HttpContext.Current);7.其他的代码,限于篇幅,就不一一贴上来了,全

9、放到示例程序里面,结构如下:/Code/ReadOnlyXmlMembershipProvider.cs作用:用户验证/Code/Util.cs作用:用于处理登录及权限请求,这个类里面的主要方法为:ProcessAuthenticationChallenge,在官方提供的样例中是一个void,用在MVC中,必须使用一个具有ActionResult返回值的方法了。/AppData/Users.xml作用:相当于存用户信息的数据库8.在项目根目录下创建default.aspx,该文件为使用IIS架设程序时的入口protectedvoidPage_Load(objectsender, EventArgs e) Response.Redirect(/Home/Index);OK,SsoOP主要结构就是上面这些,文档结构见下图(其中选中的文件是新增的,其他的都是项目模板自带的):二.SsoRP 这个RP和人品没有太大关系,作用为SSO的消费者文档结构如

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号