在跟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. Flashback Recovery Area的设置与取消

    在Oracle 10g中, Flash back家族分为以下成员: Flashback Database, Flashback Drop,Flashback Query(分Flashback Quer ...

  2. Button简单实例1

    1.XML按钮定义 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" an ...

  3. (转)javascript中 window.location= window.location;是什么意思

    重载当前页面.但是,重载后,一些$_GET或者$_POST $_REQUEST 表单提交的数据会清空.   重新加载当前页面的资源,就是刷新本页面

  4. volley三种基本请求图片的方式与Lru的基本使用:正常的加载+含有Lru缓存的加载+Volley控件networkImageview的使用

    首先做出全局的请求队列 package com.qg.lizhanqi.myvolleydemo; import android.app.Application; import com.android ...

  5. EasyuiCombobox三级联动

    有许多刚接触Easyui中Combobox控件的朋友可能都会遇到的问题:如何将Combobox做成三级联动? 先本人有个三级联动的案例给大家参考参考,经测试能通过.注意Combobox绑定的数据是Js ...

  6. iOS-OC-基础-NSNumber常用方法

    /*===========================NSNumber数值对象=========================*/ // 将基本数据类型保存为NSNumber 对象类型 NSNu ...

  7. linux下python多版本共存

    为何要安装python,linux下不是已经集成了python吗? 大多数linux系统都集成了python,但是他们的版本太低了.不能满足我们的需求,尤其是好多系统居然仍停留在 python2.6. ...

  8. cmd下操作mysql

      将mysql 安装目录下 的bin 添加到 windows 环境变量        步骤:        我的电脑 ->高级->环境变量->path->选择一个用户-> ...

  9. 微信订阅号开发之token验证后,自动回复消息功能做好,发送消息没有返回

    相信很多人会跟我一样,token验证之后,发送消息给订阅号,没有消息返回. 以下,说一下我辛苦调试得到的解决办法: 首先,token验证: 自己写的token一直验证失败,找了好久,没有发现bug.实 ...

  10. WordPress插件制作笔记(三)---Stars Comments Article

    wp 文章星级评价 插件 下载地址4:http://pan.baidu.com/s/1eQnGIGU [articles_star_vote_score_optiontable_serialize_c ...