MOSS & SSO 系列2

上回谈到与Exchange Server 2007邮件集成问题,最后有了新版本:


 任务当然是从工作流引擎那边抓的,顺便也会用到SSO的,那边是表单验证嘛,这年头用域的不多啊。。。

OWA 2007

using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.SharePoint.Portal.SingleSignon;
using Microsoft.SharePoint.Portal;

namespace OWASSOWebPart
{
    
public class OWASSOWebPart : WebPart
    
{
        
protected override void Render(System.Web.UI.HtmlTextWriter writer)
        
{
            
string strSSOLogonFormUrl = SingleSignonLocator.GetCredentialEntryUrl("OWA");
            
try
            
{
                writer.Write(
"If your login fails, please <a href=\"" + strSSOLogonFormUrl + "\">Update your credentials</a> with your new password.<br/>");
                
string[] rgGetCredentialData = null;
                Credentials.GetCredentials(
1"OWA"ref rgGetCredentialData);
                
string src = "/_layouts/OWARedirect.htm?l=" + rgGetCredentialData[0+ "&p=" + rgGetCredentialData[1];
                writer.Write(
"<iframe frameborder=\"0\" width=\"800\" height=\"600\" src=\"" + src + "\"/>");
            }

            
catch (SingleSignonException ssoe)
            
{
                
if (SSOReturnCodes.SSO_E_CREDS_NOT_FOUND == ssoe.LastErrorCode)
                
{
                    Context.Response.Redirect(strSSOLogonFormUrl);
                }

                
else
                
{
                    writer.Write(ssoe.Message);
                }

            }

        }

    }

}


替代那个MOSS自带的WebPart,如果你的OWA采用Form方式验证的话,基本上那个WebPart没有任何作用!
再在_layouts下建个html重定向文件:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    
<meta http-equiv="Content-Type" content="text/html; CHARSET=utf-8" />
    
<meta name="Robots" content="NOINDEX, NOFOLLOW" />
    
<title>Microsoft Exchange - Outlook Web Access</title>

    
<script type="text/javascript">
    
<!--
function getParameter(queryString, parameterName) {
    
var parameterName = parameterName + "=";
    
if (queryString.length > 0{
        begin 
= queryString.indexOf(parameterName);
        
if (begin != -1{
            begin 
+= parameterName.length;
            end 
= queryString.indexOf("&", begin);
            
if (end == -1{
                end 
= queryString.length;
            }

            
return unescape(queryString.substring(begin, end));
        }

        
return "null";
    }

}


function SetParams() {
    
var queryString = window.location.search.substring(1);

    logonForm.username.value 
= getParameter(queryString, "l");
    logonForm.password.value 
= getParameter(queryString, "p");
    
//alert(getParameter(queryString, "l"));
    //alert(getParameter(queryString, "p"));
    window.document.logonForm.submit();
}

    
-->
    
</script>

</head>
<body onload="SetParams();">
    Please wait
    
<form action="https://moss.demo.fr/owa/auth/owaauth.dll" method="POST" name="logonForm"
        autocomplete
="off">
        
<input type="hidden" name="destination" value="https://moss.demo.fr/owa/" />
        
<input type="hidden" name="flags" value="0" />
        
<input type="hidden" name="forcedownlevel" value="0" />
        
<input id="rdoPblc" type="hidden" name="trusted" value="0" />
        
<input id="username" name="username" type="hidden" />
        
<input id="password" name="password" type="hidden" />
    
</form>
</body>
</html>

部署后即可测试了!附件给出owa 2003 和 2007的代码源文件!
此处下载

__EOF__

本文作者pccai
本文链接https://www.cnblogs.com/pccai/archive/2008/07/03/1235018.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   pccai  阅读(1540)  评论(6编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示