1

首先,我知道如何在 IIS7 中集成 Windows 身份验证。这非常适合查看登录计算机的 Active Directory 用户。

但是,需要获取 Novell 认证用户的用户名。我不想要密码或用户名以外的任何东西。

其他限制:

  • 无法在用户计算机上安装任何东西
  • 可以在网络服务器上安装东西
  • 可以在 Web 服务器和 Novell 服务器之间建立信任
  • 它会在一个匿名访问的公共网站上,我可以安排一个需要身份验证的部分,从而从那里获取用户。
  • 该网站使用 C# .Net 2.0
  • 如果该方法还可以提供密码,我可以使用它来完全验证 Novell 的用户。该部分(与 Novell 服务器 LDAP 通信)已经完成。
  • 必须使用 IE6 和 IE7

(更新)在 Novell 网站上,关于单点登录的唯一信息显示了如何在 Novell 上登录某人,并且在结论中说明了这一点:

一种将我们的凭据保存在全局变量中的方法(还有其他方法),这样用户就不必为每个表单进行身份验证(单点登录)。

(更新)同样来自 Novell,他们说有一个SSO 解决方案。但是,内容可以追溯到 2000 年,另外一个需要在 Novell 服务器上安装插件并为每位用户支付 49 美元。所以它不是一个有效的解决方案。

4

1 回答 1

1

您说您无法在用户的计算机上安装任何东西,但您可能会发现已经有一个您可以使用的 ActiveX 控件,它可能作为 PC 上 Novell 客户端的一部分涉及。

我过去曾这样做过,使用 ActiveX 控件来识别登录用户,将其传递给网络服务器,然后使用 LDAP 加载完整的用户记录:

我过去使用过一个称为 NWDir1 的语法,使用以下语法(使用 ColdFusion 作为服务器端语言,但我相信你可以翻译):

   <cfoutput>
    <object classid="CLSID:4F021AE3-9E98-11D0-A808-00C04FDCD94A"id="NWDir1" width=32 height=32></object>
    <script language="VBScript">
    Dim vbuser
    Sub Window_OnLoad()
     On Error Resume next
     vbuser = NWDir1.LoginName
     vbuser = StrReverse(vbuser)
     initInd = InStr(vbuser, Chr(92))
     if initInd <> 0 Then
      vbuser = Left(vbuser, initInd-1) 
      vbuser = StrReverse(vbuser)
     End if
     // REDIRECTION
     document.location.href = "index.cfm?userid=" + vbuser
     Exit sub
    End Sub 
    </script>
    <cfabort> 
   </cfoutput>

这使用 vbscript 来控制提供 Novell 登录用户的 activex 客户端。然后将该值 (vbuser) 传递回 index.cfm 以进行处理。

这种技术显然很容易受到 url 黑客攻击,但我不知道在我们使用这种技术的 4 年多的时间里会发生这种情况。

我确定我最初是在 Novell 站点上找到的 - 尝试在该站点上搜索 NWDir1 或 classid。

我希望这有帮助

于 2009-05-14T04:55:56.927 回答