关于sharepoint如何做SSO,如何做OOS监视编辑

应客户需求,需要做sharepoint SSO,以前都是默认的AD验证,如果客户已经有一套SSO系统,验证过SSO之后就能自动登录,而不是浏览器上设置保存用户名密码的AD登陆。

怎么做呢?

首先sharepoint是asp.net衍生而来,对于asp.net所有内核同样适用于sharepoint。

这样,你无需去改变复杂的sharepoint内部逻辑,只需要在asp.net 的Global.asax文件里的Application_Init做操作即可。

让我们再来复习下:

Application_Init:在应用程序被实例化或第一次被调用时,该事件被触发。对于所有的HttpApplication 对象实例,它都会被调用。
· Application_Disposed:在应用程序被销毁之前触发。这是清除以前所用资源的理想位置。
· Application_Error:当应用程序中遇到一个未处理的异常时,该事件被触发。
· Application_Start:在HttpApplication 类的第一个实例被创建时,该事件被触发。它允许你创建可以由所有HttpApplication 实例访问的对象。
· Application_End:在HttpApplication 类的最后一个实例被销毁时,该事件被触发。在一个应用程序的生命周期内它只被触发一次。
· Application_BeginRequest:在接收到一个应用程序请求时触发。对于一个请求来说,它是第一个被触发的事件,请求一般是用户输入的一个页面请求(URL)。
· Application_EndRequest:针对应用程序请求的最后一个事件。
· Application_PreRequestHandlerExecute:在 ASP.NET 页面框架开始执行诸如页面或 Web 服务之类的事件处理程序之前,该事件被触发。
· Application_PostRequestHandlerExecute:在 ASP.NET 页面框架结束执行一个事件处理程序时,该事件被触发。
· Applcation_PreSendRequestHeaders:在 ASP.NET 页面框架发送 HTTP 头给请求客户(浏览器)时,该事件被触发。
· Application_PreSendContent:在 ASP.NET 页面框架发送内容给请求客户(浏览器)时,该事件被触发。
· Application_AcquireRequestState:在 ASP.NET 页面框架得到与当前请求相关的当前状态(Session 状态)时,该事件被触发。
· Application_ReleaseRequestState:在 ASP.NET 页面框架执行完所有的事件处理程序时,该事件被触发。这将导致所有的状态模块保存它们当前的状态数据。
· Application_ResolveRequestCache:在 ASP.NET 页面框架完成一个授权请求时,该事件被触发。它允许缓存模块从缓存中为请求提供服务,从而绕过事件处理程序的执行。
· Application_UpdateRequestCache:在 ASP.NET 页面框架完成事件处理程序的执行时,该事件被触发,从而使缓存模块存储响应数据,以供响应后续的请求时使用。
· Application_AuthenticateRequest:在安全模块建立起当前用户的有效的身份时,该事件被触发。在这个时候,用户的凭据将会被验证。
· Application_AuthorizeRequest:当安全模块确认一个用户可以访问资源之后,该事件被触发。
· Session_Start:在一个新用户访问应用程序 Web 站点时,该事件被触发。
· Session_End:在一个用户的会话超时、结束或他们离开应用程序 Web 站点时,该事件被触发。
使用这些事件的一个关键问题是知道它们被触发的顺序。Application_Init 和Application_Start 事件在应用程序第一次启动时被触发一次。相似地,Application_Disposed 和 Application_End 事件在应用程序终止时被触发一次。此外,基于会话的事件(Session_Start 和 Session_End)只在用户进入和离开站点时被使用。其余的事件则处理应用程序请求,这些事件被触发的顺序是:
· Application_BeginRequest
· Application_AuthenticateRequest
· Application_AuthorizeRequest
· Application_ResolveRequestCache
· Application_AcquireRequestState
· Application_PreRequestHandlerExecute
· Application_PreSendRequestHeaders
· Application_PreSendRequestContent
· <<执行代码>>
· Application_PostRequestHandlerExecute
· Application_ReleaseRequestState
· Application_UpdateRequestCache
· Application_EndRequest
这些事件常被用于安全性方面。下面这个 C# 的例子演示了不同的Global.asax 事件,该例使用Application_Authenticate 事件来完成通过 cookie 的基于表单(form)的身份验证。此外,Application_Start 事件填充一个应用程序变量,而Session_Start 填充一个会话变量。Application_Error 事件显示一个简单的消息用以说明发生的错误。
protected void Application_Start(Object sender, EventArgs e) {
Application["Title"] = "Builder.com Sample";
}
protected void Session_Start(Object sender, EventArgs e) {
Session["startValue"] = 0;
}
protected void Application_AuthenticateRequest(Object sender, EventArgs e) {
// Extract the forms authentication cookie
string cookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie = Context.Request.Cookies[cookieName];
if(null == authCookie) {
// There is no authentication cookie.
return;
}
FormsAuthenticationTicket authTicket = null;
try {
authTicket = FormsAuthentication.Decrypt(authCookie.Value);
} catch(Exception ex) {
// Log exception details (omitted for simplicity)
return;
}
if (null == authTicket) {
// Cookie failed to decrypt.
return;
}
// When the ticket was created, the UserData property was assigned
// a pipe delimited string of role names.
string[2] roles
roles[0] = "One"
roles[1] = "Two"
// Create an Identity object
FormsIdentity id = new FormsIdentity( authTicket );
// This principal will flow throughout the request.
GenericPrincipal principal = new GenericPrincipal(id, roles);
// Attach the new principal object to the current HttpContext object
Context.User = principal;
}
protected void Application_Error(Object sender, EventArgs e) {
Response.Write("Error encountered.");
}

现在知道做验证SSO在哪一块了吧,没错       Application_AuthenticateRequest:在安全模块建立起当前用户的有效的身份时,该事件被触发。在这个时候,用户的凭据将会被验证。

同理,我们监控在线协同编辑的时候,如果用户最终保存后,我们可以根据       Application_ReleaseRequestState操作,这个事件监控所有的执行完事件,然后可以锁定页面,只对协同编辑页面进行监控。然后根据post过来的指令可以做扩展操作。

好了,后续我还将对这个章节进行详细讲解。

由于代码,流程,质量要求特别严格,所以不能粘贴代码,只是给大家讲解个思路,自行研究。

还是那句话,做sharepoint一定做过非常大型的项目,个人研究无法理解深刻,比如,你们自行研究如何架设SSO,一套SSO系统也价格不菲,而且根据SAML协议来的公司也很多,你不可能自己再做个基于SAML2.0的SSO系统吧。

机会来的时候好好把握,加油!

时间: 2024-12-30 04:42:49

关于sharepoint如何做SSO,如何做OOS监视编辑的相关文章

无责任励志一则-成功就是把你做的事做精致

无责任励志一则-成功就是把你做的事做精致 读tomcat和spring的源码,结果根本没能坚持下去.因为根本没那么多时间去阅读代码,也坚持不下去,最后都是不了了之.现在想来,根本不是对这些项目感兴趣,其实平时用到的功能也不全,完全是因为觉得它们很牛逼. HDFS是Nutch为了保存海量文件而开发的,而Hadoop本身也是起源于项目需要. 现在的工作,我一直在做一些跑job的事情,大家都觉得挺无聊.但是想想,其实那么高端大气的Hadoop也是从跑job开始的.何不好好干呢?

做管理还是做技术

做管理还是做技术? 如果你现在问我,我会毫不犹豫地告诉你,做管理.做个管理者.做个官,哪怕是小头目也好. 也许你会说,搞管理还是搞技术,都可以的.比如说,爱立信公司,就有管理.技术两条路线,有些搞技术的工资比管理还要高. 放屁. 大公司,也许吧.但在中小公司,管理者不仅有更高的薪酬,更重要的是,有分配资源的能力.这个资源,除了下属的薪酬福利的决定权.建议权,也可以是负责哪块技术的拍板权.比方说,你是项目经理,你就可以决定谁谁谁去做哪一块,去钻研那块技术.作为项目经理,你完全可以安排那些繁琐.机械

无锡美新赵阳:创业18年,一辈子做好一家企业(创业是一种生活方式;为了赚钱而创业,那是扯淡”。最重要的是做自己喜欢做的事情)

会议室的门开了,赵阳大步迈了进来,带着一身的仆仆风尘——助理说,他才和客户谈好业务便匆匆往回赶——这场景,仿佛和七年前重叠起来. 那年,无锡日报记者采访了创新创业人物.身为美新半导体董事长兼CEO的赵阳;如今,还是在高新区新辉环路2号,还是那个头衔,我们的话题却有了更多的延展性. 一晃,当年北大物理系高才生.后赴美国普林斯顿大学攻读物理和电子工程并师从诺奖得主DanielTsui教授获电子工程博士学位的赵阳,在无锡创业已有18年;他带领的美新,也由零起步成长为全球仅有的同时具备 MEMS传感器和

在亚马逊做店铺的经验谈:少做产品,做精产品才是正道

从2001年开始,除了宣传自己是最大的网络零售商外,亚马逊同时把“最以客户为中心的公司”(the world‘s most customer-centric company)确立为努力的目标.此后,打造以客户为中心的服务型企业成为了亚马逊的发展方向.为此,亚马逊从2001年开始大规模推广第三方开放平台(marketplace).2002年推出网络服务(AWS).2005年推出Prime服务.2007年开始向第三方卖家提供外包物流服务 Fulfillment by Amazon(FBA).2010

做产品还是做技术?

稀里糊涂的进入一家通信公司工作,一直供职于软件平台部门.随着公司发展战略的转变,软件平台部门已经成为鸡肋.作为资源,被各个产品线各种呼来唤去.最后的绩效考核竟然由某一产品线的项目经理说了算,满眼都是累啊. 下一份工作,在产品和技术之间,无论如何也要选择前者.随着年龄的增长,不可能一直做技术.做产品,能够培养一个人的大局观,尤其是做互联网产品,可以为创业打下良好的基础. 目前没有做产品的经验,可以尝试去应聘一些相关的职位.如果不成,可以选择做产品比较牛B的工作先做技术,然后再往产品转.

Spring如何绑定请求参数或PathVariable参数绑定到对象,并做使用@Valid做JSR3

Spring如何绑定请求参数或PathVariable参数绑定到对象,并做使用@Valid做JSR303校验 问题描述 以前在Spring中只对@RequestBody映射的请求参数使用过@Valid做JSR303校验,RequestBody一般适用与Json或者Xml报文,如果是表单提交的参数(a=xxx&b=xxx),或者通过@PathVariable从url映射过来的参数就不懂得怎么做校验了.后来查阅官方文档找到了实现方法. 解决方案 首先这里还是校验那些把请求参数映射成事先定义好的参数对

《Andrioid_Popupwindow案例》popWindow做Menu,popWindow做选项菜单

先看效果,上图展示了最近在开发的项目经常用到的pop案例,包括一般的选项,下拉选项,menu等,布局就不贴了,很简单 相信都能秒懂,贴下pop的核心代码 /** * * @author yaguang.wang * */ public class MenuPop extends PopupWindow { private int resId; private Context mContext; private View popView; private LayoutInflater inflat

技术人员的未来:做技术还是做管理?

一.如何确定自己做技术还是管理 从标题来看是个很简单很朴实的问题,大部分技术人员在工作3年.5年以后都会面临这个问题,如果没有面临,说明你平常思考的太少,或者你危机要降临了.本文讨论的是通常意义的计算机相关技术人员的个人职业发展规划,如果是个人创业或者其他目标追求不在此列,我只是描述大部分普普通通的计算机工程师的问题. 中国是个官本位思想很重的国家,所有主流意识认为能够当官或者做管理的人才是有出头的,才是有出息的,才是王道,才会被亲朋好友同事同学瞧得起,其实,不尽然. 我说点大块的,比如说,如果

做自己想做的工作,你也可以

注:这篇文章根据我2015年12月12日在中国黑客联盟和12月17日在CSDN的公开课"做自己想做的工作"整理而来,整理时做了不少调整,与讲课内容大有出入,甚至可以当做一篇新文章来看. 我们大多数人都面临一个严肃的事实:在离开学校后,我们必须在长达40到50年的时间里努力地工作.假如在这么漫长的岁月里,在我们最有精力最有活力的这段人生里,一直做着自己不喜欢的工作(这并不罕见),那就是浪费时间.浪费生命.所以,找到一份适合自己的工作非常重要,只有在做自己想做的工作时,才能获得职业满足,才