在跟exchange集成登陆时,通常有这样的需求,用户需要点击邮件链接的时候直接打开,不再需要输入用户名密码,实现所谓的单点登陆。

通常有两种方式
1、form认证

登陆原理:用js模拟表单登陆

代码: POSTExchange: function (username,password,url) {

///<summary>

/// 单点登录方法

///</summary>

var page = window.open("xxxx.loginExchange", "1");

setTimeout(function () {

var span = page.document.createElement("span");

span.innerHTML = "正在加载中...";

page.document.body.appendChild(span);

var form = page.document.createElement("form");

form.style.display = "none";

form.action = "http://XXXXX/owa/auth/owaauth.dll";

form.method = "post";

form.innerHTML = " <input name=\"username\" type=\"text\" value=\"" + username  + "\"/>"

+ "<input name=\"password\" type=\"password\" value=\"" + password + "\" />"

+ "<input name=\"destination\" type=\"text\" value=\"" + obj._destination + "\" />"

+ "<input name=\"flags\" type=\"text\" value=\"0\" />"

+ "<input name=\"forcedownlevel\" type=\"text\" value=\"0\" />"

+ "<input name=\"trusted\" type=\"text\" value=\"0\" />"

+ "<input name=\"isUtf8\" type=\"text\" value=\"1\" />"

+ "<input type=\"submit\" value=\"提交\" />";

setTimeout(function () {

page.document.body.appendChild(form);

setTimeout(function () {

form.submit();

setTimeout(function () {

//跳转

if (obj._baseClass._location) {

window.open( url , "1");

}

}, 1000);

}, 1500);

}, 500);

}, 500);

}

},

2、windows认证
登陆原理:利用xmlheeprequest对象,传递用户名密码通过认证
代码:
 function Authen(username, password, url) {
         var auth;
         try {
             auth = new ActiveXObject('Msxml2.XMLHTTP');
         } catch (e) {
             try {
                 auth = new ActiveXObject('Microsoft.XMLHTTP');
             } catch (e) {
                 auth = new XMLHttpRequest();
             }
         }
 
         auth.open('get', url, false, username, password);
         auth.send(null);
 
         switch (auth.status) { //检测auth.send以后的状态,
             case 200: //状态为:200代表用户名密码正确,                
                 window.location.href = url; //浏览器重转向至OWA
                 break;
             case 401: //状态为:401代表用户名密码不正确,身份验证错误
                 alert("用户无效或密码错误。");
                 break;
             default: //其它状态,如服务器无法访问
                 alert("对不起,服务器发生错误,请稍后再试!");
                 break;
         }
     }
 
以上两种方式各有弊端,第一种无法捕获服务器响应,并且经过多次测试,并不是每次都能直接打开。第二种需要exchenge支持windows认证,并且需要允许脚本跨域读取数据源(仅在IE浏览器可行)。
 除此之外,需要考虑发送用户名密码时的安全性。

exchange邮箱的”单点登陆“的更多相关文章

  1. 集成基于CAS协议的单点登陆

    相信大家对单点登陆(SSO,Single Sign On)这个名词并不感到陌生吧?简单地说,单点登陆允许多个应用使用同一个登陆服务.一旦一个用户登陆了一个支持单点登陆的应用,那么在进入其它使用同一单点 ...

  2. cas单点登陆。就这一篇就够了!!!!!

    前言: cas是什么我就不累赘说了.就简单说下大致的流程.首先,cas是一个独立的项目.就是一个war包,部署在tomcat上面启动就ok.然后我们要实现单点登陆,无疑是访问系统1,如果没有登录,就跳 ...

  3. centos7下ldap+kerberos实现单点登陆

    一. LDAP概念 http://wiki.jabbercn.org/index.php/OpenLDAP2.4%E7%AE%A1%E7%90%86%E5%91%98%E6%8C%87%E5%8D%9 ...

  4. 集成基于OAuth协议的单点登陆

    在之前的一篇文章中,我们已经介绍了如何为一个应用添加对CAS协议的支持,进而使得我们的应用可以与所有基于CAS协议的单点登陆服务通讯.但是现在的单点登陆服务实际上并不全是通过实现CAS协议来完成的.例 ...

  5. Lind.DDD.SSO单点登陆组件的使用(原创)

    回到目录 一般sso的说明 在Lind.DDD框架里,有对单点登陆的集成,原理就是各个网站去sso网站统一登陆授权,之后在sso网站将登陆的token进行存储,存储方式随你(cache,redis,m ...

  6. ASP.NET 单点登陆

    第一种:同主域但不同子域之间实现单点登陆 Form验证其实是基于身份cookie的验证.客户登陆后,生成一个包含用户身份信息(包含一个ticket)的cookie,这个cookie的名字就是在web. ...

  7. (原创)AD账户误删导致Exchange邮箱被删 莫苦恼

    由于人员变动,离职人员AD账户和邮箱经常要删除.但是在删除AD账户的时候难免会犯错,将在用的用户给删除了,这是个痛苦的事情, 然后你会发现Exchange邮箱也会跟着删除,抓狂了..,还好,幸亏这里进 ...

  8. tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片

    本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tornado的后端和ajax的 ...

  9. ASP.NET在不同情况下实现单点登陆(SSO)的方法

    第一种:同主域但不同子域之间实现单点登陆 Form验证其实是基于身份cookie的验证.客户登陆后,生成一个包含用户身份信息(包含一个ticket)的cookie,这个cookie的名字就是在web. ...

随机推荐

  1. 国内外移动端web适配屏幕方案

    基础知识点 设备像素:设备像素又称物理像素(physical pixel),设备能控制显示的最小单位,我们可以把这些像素看作成显示器上一个个的点. iPhone5的物理像素是640X1136. PS: ...

  2. IIS7如何显示详细错误信息

    使用Vista或Win7操作系统的用户在不断增加,用Win7旗舰版开发测试程序程序人员也与日俱增,Win7下测试程序时,如果程序出 错,IIS7会提示HTTP Error 500 - Internal ...

  3. C# 执行存储过程

    SqlParameter[] paras = BuildParas(id, time, name); bool bRet = ExcuteProcedure(“数据库连接字符串”, "存储过 ...

  4. [转]CENTOS6 VNCSERVER安装

    标签:vncservercentos6.0 ssh隧道 vncviewer centos 休闲 职场 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律 ...

  5. LA 3662 Another Minimum Spanning Tree (曼哈顿距离最小生成树 模板)

    题目大意: 曼哈顿最小距离生成树 算法讨论: 同上. 这回的模板真的准了. #include <iostream> #include <cstring> #include &l ...

  6. ORACLE11G常用函数

    1 单值函数 1.1 日期函数 1.1.1 Round [舍入到最接近的日期](day:舍入到最接近的星期日) select sysdate S1, round(sysdate) S2 , round ...

  7. 傻瓜式硬盘重装win7系统图文加视频教程

    标准适用环境: win7系统还能用,但是想重装win7系统.[当然win7进不去也可以在PE进行] 其它 需要工具: win7 ISO镜像                          | [ w ...

  8. information_schema.referential_constraints 学习

    information_schema.referential_constraints 表用于查看外键约束 1.information_schema.referential_constraints表的常 ...

  9. 【iOS开发】collectionView 瀑布流实现

    一.效果展示 二.思路分析 1> 布局的基本流程 当设置好collectionView的布局方式之后(UICollectionViewFlowLayout),当系统开始布局的时候,会调用 pre ...

  10. 把所有的QT的类都过一遍脑子

    http://doc.qt.io/qt-5/classes.html 这样就明白QT提供的全部功能了,避免重复造轮子,或者给自己开发带来麻烦-