基于MS客户端的单点登陆

Microsoft 客户端单一登录概述

通过使用 Microsoft 客户端进行单一登录 (SSO),可以在 WebLogic Server 域中运行的 Web 应用程序或 Web Service 与 Microsoft 域中的 .NET Web Service 客户端或浏览器客户端(例如,Internet Explorer)之间进行跨平台身份验证。Microsoft 客户端必须使用基于简单和受保护协商 (SPNEGO) 机制的Windows 身份验证。

跨平台身份验证通过仿真使用 Kerberos 协议的本地 Windows 到 Windows 身份验证服务的协商行为来实现。为使跨平台身份验证正常运行,非 Windows 服务器(本文中为 WebLogic Server)需要解析 SPNEGO 标记才能提取随后将用于身份验证的 Kerberos 标记。

 


使用 Microsoft 客户端实现 SSO 的系统要求

要通过 Microsoft 客户端使用 SSO,需要:

在主机上安装:

  • Windows 2000 或更高版本
  • 完全配置的 Active Directory 身份验证服务。特定的 Active Directory 要求包括:
    • 用于映射 Kerberos 服务的用户帐户
    • 这些帐户的服务委托人名称(Service Principal Name,简称为 SPN)
    • 创建 Keytab 文件并复制到 WebLogic Server 域的启动目录中
  • 已正确安装 WebLogic Server 并将其配置为通过 Kerberos 进行身份验证(如本文所述)

在客户端系统上安装:

  • Windows 2000 Professional SP2 或更高版本
  • 以下类型的客户端之一:
    • 经过适当配置的 Internet Explorer 浏览器。支持 Internet Explorer 6.01 或更高版本。
    • .NET Framework 1.1 和经过适当配置的 Web Service 客户端。

      客户端必须登录到 Windows 2000 域并且必须从该域中的 Active Directory 服务器获取 Kerberos 凭据。本地登录将不起作用。

 


使用 Microsoft 客户端进行单一登录:主要步骤

使用 Microsoft 客户端配置 SSO 需要经过对 Microsoft Active Directory、客户端和 WebLogic Server 域的设置过程(有关这些过程的详细信息,请参阅以下部分)。

  • 在 Active Directory 中定义一个委托人来表示 WebLogic Server。Kerberos 协议使用 Microsoft 中的 Active Directory 服务器来存储所需的安全信息。
  • 需要在 Microsoft 域中访问的任何 Microsoft 客户端都必须设置为使用 Windows 集成身份验证,以便在可用时发送 Kerberos 票据。
  • 在 WebLogic Server 域的安全领域中,配置一个协商标识声明提供程序。SSO 中使用的 Web 应用程序或 Web Service 需要以特定的形式设置身份验证。此外,还必须创建定义 WebLogic Server 的 Kerberos 标识的位置的 JAAS 登录文件。

要使用 Microsoft 客户端配置 SSO,请执行下列操作:

  1. 将网络域配置为使用 Kerberos。请参阅将网络域配置为使用 Kerberos
  2. 创建 WebLogic Server 的 Kerberos 标识。
    1. 在运行 WebLogic Server 的主机的 Active Directory 中创建用户帐户。
    2. 创建该帐户的服务委托人名称。
    3. 创建该帐户的用户映射和 keytab 文件。

      请参阅创建 WebLogic Server 的 Kerberos 标识

  3. 选择一个 Microsoft 客户端(Web Service 或浏览器)并将其配置为使用 Windows 集成身份验证。请参阅将 Microsoft 客户端配置为使用 Windows 集成身份验证
  4. 将 WebLogic Server 域设置为使用 Kerberos 身份验证。
    1. 创建一个 JAAS 登录文件,使其指向 Microsoft 域中的 Active Directory 服务器和步骤 1 中创建的 keytab 文件。请参阅创建 JAAS 登录文件.
    2. 配置 WebLogic Server 安全领域中的协商标识声明提供程序。请参阅配置协商标识声明提供程序
  5. 使用特定的启动参数启动 WebLogic Server。请参阅通过启动参数在 WebLogic Server 中使用 Kerberos 身份验证

以下部分将详细描述这些步骤。

 


将网络域配置为使用 Kerberos

通过使用 Active Directory 和 Kerberos 服务,Windows 域控制器可以充当 Kerberos 密钥分发中心(Key Distribution Center,简称 KDC)。在任何域控制器上,Active Directory 和 Kerberos 服务都自动运行。

要在网络域控制器中配置 Kerberos,需要将每台要访问 KDC 的计算机配置为查找 Kerberos 领域和可用的 KDC 服务器。在 Windows 计算机上,修改 C:/winnt 文件夹中的 krb5.ini 文件。在 UNIX 计算机上,修改 krb5.conf 文件,其默认位置为 /etc/krb5/。例如:

清单 6-1 示例 krb5.ini 文件
[libdefaults]
default_realm = MYDOM.COM (Identifies the default realm. Set its value to your Kerberos realm)
default_tkt_enctypes = des-cbc-crc
default_tgs_enctypes = des-cbc-crc
ticket_lifetime = 600
[realms]
MYDOM.COM = {
kdc = <IP address for MachineA> (host running the KDC)
(For Unix systems, you need to specify port88, as in <IP-address>:88)
admin_server = MachineA
default_domain = MYDOM.COM
[domain_realm]
.mydom.com = MYDOM.COM
[appdefaults]
autologin = true
forward = true
forwardable = true
encrypt = true

 


创建 WebLogic Server 的 Kerberos 标识

Active Directory 提供对服务委托人名称 (SPN) 的支持,SPN 是 Kerberos 身份验证中的关键组件。它们是服务器上所运行的服务的唯一标识符。需要为使用 Kerberos 身份验证的每一项服务都设置 SPN,这样客户端才能识别网络上的服务。SPN 通常类似于 name@YOUR.REALM。您需要定义一个 SPN 来表示 Kerboros 领域中的 WebLogic Server。如果某项服务未设置 SPN,客户端将无法找到该服务。如果未正确设置 SPN,Kerberos 身份验证将无法进行。Keytab 文件是用于存储 SPN 的机制。Keytab 文件将复制到 WebLogic Server 域并在登录过程中使用。此配置步骤描述如何创建 WebLogic Server 的 SPN、用户映射和 keytab 文件。

此配置步骤需要使用下列 Active Directory 实用工具:

  • setspn—Windows 2000 资源工具包
  • ktpass—Windows 2000 分发 CD 中的 Program Files/Support Tools
注意:setspnktpass Active Directory 实用工具都是 Microsoft 的产品。因此,BEA Systems 不提供有关此类实用工具的完整文档。有关详细信息,请参阅适当的 Microsoft 文档。

要创建 WebLogic Server 的 Kerberos 标识,请执行下列步骤:

  1. 在 Active Directory 服务器中,为运行 WebLogic Server 的主机创建一个用户帐户(选择“新建”>“用户”,而不是“新建”>“计算机”)。

    在创建该用户帐户时,应使用计算机的简单名称。例如,如果主机名为 myhost.example.com,则在 Active Directory 中创建一个名为 myhost. 的用户。

    请记录下创建用户帐户时定义的密码。在步骤 3 中将需要使用此密码。请勿选择“用户必须在下次登录时更改密码”选项,或任何其他密码选项。

  2. 配置新用户帐户以使其符合 Kerberos 协议。此用户帐户的加密类型必须是 DES 并且必须要求进行 Kerberos 预身份验证。
    1. 在左窗格的“用户”树中,用鼠标右键单击该用户帐户的名称,然后选择“属性”。
    2. 选择“帐户”选项卡,并选中“为此帐户使用 DES 加密类型”框。确保未选中其他框,尤其不要选中“不要求进行 Kerberos 预身份验证”。
    3. 设置加密类型可能会损坏密码。因此,应重置用户密码,方法是用鼠标右键单击该用户帐户的名称,选择“重设密码”,然后重新输入之前指定的同一密码。
  3. 使用 setspn 实用工具为步骤 1 中创建的用户帐户创建服务委托人名称 (SPN)。请输入下列命令:
    setspn -a host/myhost.example.com myhost
    
    setspn -a HTTP/myhost.example.com myhost
    
  4. 使用以下命令检查与您的用户帐户关联的 SPN:
    setspn -L account name
    

    这是一个重要步骤。如果将同一服务链接到 Active Directory 服务器中的另一帐户,则客户端将不会向服务器发送 Kerberos 票据。

  5. 使用 ktpass 实用工具创建用户映射:

    Windows
    ktpass -princ host/myhost@Example.CORP -pass password -mapuser myhost -out c:/temp/myhost.host.keytab

  6. 创建 keytab 文件。在 Windows 上,ktab 实用工具管理密钥表中的委托人名称和密钥对,并允许您列出、添加、更新或删除委托人名称和密钥对。在 UNIX 上,最好使用 ktpass 实用工具。

    Windows

    1. 在运行 WebLogic Server 的主机上运行 ktab 实用工具来创建 keytab 文件:
      ktab -k keytab-filename -a myhost@Example.CORP
      
    2. 将 keytab 文件复制到 WebLogic Server 域的启动目录中。

      UNIX

    3. 使用 ktpass 实用工具并通过类似以下形式的命令创建用户映射,其中 password 是在步骤 1 中创建的用户帐户的密码:
      ktpass -princ HTTP/myhost@Example.CORP -pass password -mapuser myhost -out c:/temp/myhost.HTTP.keytab
      
    4. 将步骤 a 中创建的 keytab 文件复制到 WebLogic Server 域的启动目录中。
    5. 以根用户身份登录,然后使用 ktutil 实用工具将它们合并到一个 keytab 文件中,如下所示:
      ktutil: "rkt myhost.host.keytab"
      ktutil: "rkt myhost.HTTP.keytab"
      ktutil: "wkt mykeytab"
      ktutil: "q"
      
  7. 运行 kinit 实用工具验证 Kerberos 身份验证是否正常运行。
    kinit -k -t keytab-file account-name
    

    其输出应类似以下内容:

    New ticket is stored in cache file C:/Documents and 
    Settings/Username/krb5cc_MachineB
    

 


将 Microsoft 客户端配置为使用 Windows 集成身份验证

应确保将需要用于单一登录的 Microsoft 客户端配置为使用 Windows 集成身份验证。以下部分描述如何将 .NET Web 服务器和 Internet Explorer 浏览器客户端配置为使用 Windows 集成身份验证。

配置 .NET Web Service

要将 .NET Web Service 配置为使用 Windows 身份验证,请执行下列操作:

  1. 在 Web Service 的 web.config 文件中,将 IIS 和 ASP.NET 的身份验证模式设置为 Windows,如下所示:
    <authentication mode="Windows" />
    

    此设置通常是默认设置。

  2. 添加 Web Service 客户端需要传递给代理 Web Service 对象的语句,以便通过 SOAP 发送凭据。

    例如,如果某项 Web Service 的 Web Service 客户端由代理对象 conv 表示,则语法为:

    /*
    * 将凭据显式递到 Web Service
    */
    conv.Credentials =
    System.Net.CredentialCache.DefaultCredentials;
    

配置 Internet Explorer 浏览器

要将 Internet Explorer 浏览器配置为使用 Windows 身份验证,请在 Internet Explorer 中执行以下过程:

配置本地 Intranet 域
  1. 在 Internet Explorer 中,选择“工具”>“Internet 选项”。
  2. 选择“安全”选项卡。
  3. 选择“本地 Intranet”,然后单击“站点”。
  4. 在“本地 Intranet”弹出窗口中,确保选中“包括所有不使用代理服务器的站点”和“包括没有列在其他区域的所有本地 (Intranet) 站点”选项。
  5. 单击“高级”
  6. 在“本地 Intranet”(高级)对话框中,添加所有要在参与 SSO 配置的 WebLogic Server 实例中使用的相对域名(例如,myhost.example.com),然后单击“确定”。
配置 Intranet 身份验证
  1. 选择“工具”>“Internet 选项”。
  2. 选择“安全”选项卡。
  3. 选择“本地 Intranet”,然后单击“自定义级别...”。
  4. 在“安全设置”对话框中,滚动到“用户验证”部分。
  5. 选择“只在 Intranet 区域自动登录“。使用此选项时,用户不必重新输入登录凭据,它是此解决方案的关键部分。
  6. 单击“确定”。
验证代理设置

如果启用了代理服务器,则:

  1. 选择“工具”>“Internet 选项”。
  2. 选择“连接”选项卡,然后单击“局域网设置”。
  3. 验证代理服务器地址和端口号是否正确。
  4. 单击“高级”。
  5. 在“代理服务器设置”对话框中,确保在“例外”字段中输入了所有需要的域名。
  6. 单击“确定”关闭“代理服务器设置”对话框。
为 Internet Explorer 6.0 设置集成身份验证

如果运行 Internet Explorer 6.0,则除了已描述的设置外,还需要进行另一项设置。

  1. 在 Internet Explorer 中,选择“工具”>“Internet 选项”。
  2. 选择“高级”选项卡。
  3. 滚动到“安全”部分。
  4. 确保选中“启用集成 Windows 身份验证(需要重启动)”,然后单击“确定”。
  5. 如果未选中此选项,请重新启动计算机。

 


创建 JAAS 登录文件

如果在 Windows 或 UNIX 平台上运行 WebLogic Server,则需要 JAAS 登录文件。JAAS 登录文件指示要的 WebLogic 安全框架使用 Kerberos 身份验证并定义包含 WebLogic Server 的 Kerberos 标识信息的 keytab 文件的位置。该文件的位置在 WebLogic Server 的 java.security.auth.login.config 启动参数中指定,如通过启动参数在 WebLogic Server 中使用 Kerberos 身份验证中所述。

清单 6-2 包含一个用于 Kerberos 身份验证的示例 JAAS 登录文件。

清单 6-2 用于 KERBEROS 身份验证的示例 JAAS 登录文件
com.sun.security.jgss.initiate {

     com.sun.security.auth.module.Krb5LoginModule required
     principal="myhost@Example.CORP" useKeyTab=true
     keyTab=mykeytab storeKey=true;
};

com.sun.security.jgss.accept {

     com.sun.security.auth.module.Krb5LoginModule required
     principal="myhost@Example.CORP" useKeyTab=true
     keyTab=mykeytab storeKey=true;

};

 


配置标识声明提供程序

WebLogic Server 包含一个安全提供程序 - 协商标识声明提供程序,它可支持使用 Microsoft 客户端的单一登录 (SSO)。此标识声明提供程序会解码简单和受保护协商 (SPNEGO) 标记来获取 Kerberos 标记,并在验证 Kerberos 标记后将 Kerberos 标记映射到 WebLogic 用户。需要在 WebLogic 安全领域中配置协商标识声明提供程序,以便启用 Microsoft 客户端的 SSO。请参阅“管理控制台联机帮助”中的配置协商标识声明提供程序配置身份验证和标识声明提供程序

 


通过启动参数在 WebLogic Server 中使用 Kerberos 身份验证

要在 WebLogic Server 中使用 Kerberos 身份验证,请在启动 WebLogic Server 时使用下列启动参数:

-Djava.security.krb5.realm=Example.CORP
-Djava.security.krb5.kdc=ADhostname
-Djava.security.auth.login.config=krb5Login.conf
-Djavax.security.auth.useSubjectCredsOnly=false
-Dweblogic.security.enableNegotiate=true

其中

  • java.security.krb5.realm 定义运行 Active Directory 服务器的 Microsoft 域。
  • java.security.krb5.kdc 定义运行 Active Directory 服务器的主机名。
  • java.security.auth.login.config 定义 Kerberos 登录信息的位置。
  • javax.security.auth.useSubjectCredsOnly 指定可以使用主题凭据之外的身份验证机制。
  • weblogic.security.enableNegotiate 可使 WebLogic Server 中的 Servlet 容器支持 SPNEGO 使用的协商标记。

 


验证 Microsoft 客户端的 SSO 配置

要验证 Microsoft 客户端的 SSO 的配置是否正确,请将浏览器(已按配置 Internet Explorer 浏览器中的描述配置)指向要使用的 Microsoft Web 应用程序或 Web Service。如果登录到 Windows 域并从该域中的 Active Directory 服务器获取 Kerberos 凭据,则可以在不提供用户名或密码的情况下访问该 Web 应用程序或 Web Service。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ourmsg是基于.NET框架C#语言开发的一套开源轻量级即时通讯软件,当前版本支持windows XP及以上操作系统。提供了基于C# MONO的Xamarin Android和IOS的客户端Demo。Ourmsg完成了即时通讯的基础核心功能:图片和文本混编的单聊、群聊(支持gif动画表情);支持离线消息、离线文件传输;在线UDP P2P文件传输;远程协助(远程控制);点对点音视频对话。 Ourmsg设计为服务器端和客户端(C/S)模式,服务器端数据库兼容MS SQL SERVER和MYSQL等,本程序提供了基于MS SQL SERVER和MYSQL的基础数据库。客户端数据库采用SQLite主要用于保存聊天记录。 Ourmsg适用于企事业单位以及政府机关,可与其IT系统(OA、MIS等)快速集成在一起,以提高工作效率,降低沟通成本。Ourmsg的数据传输采用了GZIP流压缩和AES 256/192、3DES 192/128位加密算法,使数据传输安全可靠。因此,Ourmsg也适合安全性要求较高的私有网络内安装部署使用。同时,Ourmsg也可部署在互联网上,提供给互联网公众用户注册使用。 由于Ourmsg基本通讯采用了长连接的Websocket,因此,你可以将支持Websocket浏览器的WEB应用程序与之集成通讯(ASP.NET、JSP、PHP等)。目前主流的浏览器均支持Websocket来集成Ourmsg服务,开发人员就可以轻松开发自己WEB IM。 利用提供的基于C# MONO的Xamarin Android和IOS的客户端Demo,你可以用Xamarin C# 快速开发出基于 Android和IOS平台的APP客户端,核心功能只需要用C# 写一次,就可以编译到Android和IOS平台,可以大大降低学习JAVA和OC的成本和缩短项目开发周期。 目前,Xamarin的开发商初创公司已经被微软收购,相信其前景一片光明。用最新版的Xamarin开发的IOS和Android APP已经非常稳定和高效。
实验三Socket通信实验报告 (1)实验目的和要求 1. 掌握VB、VC++、VS或JAVA等集成开发环境编写网络程序的方法; 2. 掌握客户/服务器(C/S)应用的工作方式; 3. 学习网络中进程之间通信的原理和实现方法; 4. 理解单播、组播和广播的原理并比较其不同之处; 5. 要求本机既是客户端又是服务器端; (2)实验内容 所编写的程序应具有如下功能: 1. 具有点对点通信功能,任意客户端之间能够发送消息; 2. 具有群组通信功能,客户端能够向组内成员同时发送消息,其他组成员不能收到; 3. 具有广播功能,客户端能够向所有其他成员广播消息; (3)编程语言和环境 1. 编程语言C/C++/C#/Java等均可; 2. 编程环境Windows(MS Visual系列,VC/VB/VS.Net;)和Linux(编辑器vi+编译器GCC)均可; (4)实验主要功能实现说明 以下为针对三个实验内容实现方法的简要说明,示例所用语言为C。 基于C的面向连接的socket编程模型 1. 点对点通信功能 实现网络点对点通讯程序的关键步骤就是实现信息在网络中的发送和接收。数据接收 使用的是Socket,数据发送使用的是NetworkStream。 1.1利用Socket来接收信息 TcpListener tlListen1 = new TcpListener ( 8889 ) ; //侦听端口号 tlListen1.Start ( ) ; Socket skSocket = tlListen1.AcceptSocket ( ) ; //接受远程计算机的连接请求,并获得用以接收数据的Socket实例 EndPoint tempRemoteEP = skSocket.RemoteEndPoint ; //获得远程计算机对应的网络远程终结点 while ( true ) { Byte [] byStream = new Byte[80] ; //定义从远程计算机接收到数据存放的数据缓冲区 int i = skSocket.ReceiveFrom ( byStream , ref tempRemoteEP ) ; //接收数据,并存放到定义的缓冲区中 string sMessage = System.Text.Encoding.UTF8.GetString ( byStream ) ; //以指定的编码,从缓冲区中解析出内容 MessageBox.Show ( sMessage ) ; //显示传送来的数据 } 1.2利用NetworkStream来传送信息 TcpClient tcpc = new TcpClient ( "10.138.198.213" , 8888 ) ; //对IP地址为"10.138.198.213"的计算机的8888端口提出连接申请 NetworkStream tcpStream = tcpc.GetStream ( ) ; //如果连接申请建立,则获得用以传送数据的数据流 string sMsg = "您好,见到您很高兴" ; StreamWriter reqStreamW = new StreamWriter ( tcpStream ) ; //以特定的编码往向数据流中写入数据 ,默认为UTF8编码 reqStreamW.Write ( sMsg ) ; //将字符串写入数据流中 reqStreamW.Flush ( ) ; //清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流 2. 群组通信功能 组播编程需要UDP,有两个类支持组播网络编程Socket和UdpClient.一台计算机要加 入某一个组,然后接收发往这个组的信息。Socket类要调用SetSocketOption函数加入和 离开某一个组。UdpClient类有直接的加入和离开某个组的成员函数可以调用。而向某个 组发信息,则没有什么特殊的,只需把发送数据的目的地址设为组播地址就可以了。 发送端: Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint iep = new IPEndPoint(IPAddress.Parse("224.0.0.1"), 3000); EndPoint ep = (EndPoint)iep; byte[] b = Encoding.ASCII.GetBytes("just a test!"); s.SendTo(b, ep); s.Close(); 接收端: Socket s = new Socket(AddressFamily.InterNetwork, SocketTyp
SqlToolBox是一款纯绿色的免费数据库客户端软件,基于Java Swing编制而成,旨在于为开发人员,系统工程师和数据库管理员提供一种通用方便和快捷的数据库操作工具,使他们摆脱需要学习掌握使用多种数据库客户端的苦恼,并减轻他们日常操作数据库和编写Sql语句的任务量,帮助他们把精力投入到解决更有意义的问题上去。 SqlToolBox现有功能 1. 能连接到MySql,Oracle和Ms Sql Server三种数据库。 2. 连接到数据库后,会提供数据库Schema和表的树视图以便用户进行浏览和查找,另外还提供了一个过滤器帮助用户缩小查找范围。 3. 用户能自动快速获取单表的创建,查询,更新,删除,建表语句,整表全部数据插入语句,单表对应Pojo类和单表的Hibernate映射文件等常用文字,且可借此构造更复杂的Sql语句。 4. 能执行Sql语句并显示执行结果,如果是查询语句会以表格形式显示结果,还提供CSV形式数据下载;如果是非查询语句或是错误的查询语句则会以文字形式告知用户。 5. 在用户输入Sql语句的过程中提供Sql语法高亮功能,以助于Sql语句的识别。 6. 提供Sql格式化功能以助于Sql语句的识别和整理。 7. 提供Redo/Undo,Shift整体退格进格,大小写转化,将Sql语句用StringBuilder包容以及将Sql语句中关键字大写表示等常用文字编辑功能。这些都能帮助程序员在程序中书写Sql语句。 8. 能保存和记忆数据库信息,以便下次打开。 。 运行SqlToolBox有何前提条件? 将SqlToolBox运行起来的唯一前提是安装JDK6或以上版本。 SqlToolBox需要安装吗? SqlToolBox是一款纯绿色软件,它对您的系统不做出任何更改,因此不需要安装和卸载。 SqlToolBox安全吗? 由于软件使用Java编写而成,它本身就具有较高的安全性。此外作者保证在SqlToolBox整个系列中都不会加入病毒,木马,插件等坏东西。 如何运行SqlToolBox? 解开下载包,然后双击run.bat即可。 在Unix/Linux下如何运行SqlToolBox? 除了也需要安装JDK外,您还需要参照run.bat写一份脚本,然后执行它。 如何使用SqlToolBox打开一个数据库? 程序运行起来后,您将看到一个输入数据库信息的对话框,请依次填入数据库所在机器的IP地址,数据库的库名称,选择数据库的类型以及输入登录数据库的用户名和密码等必要信息。此后再点击“连接数据库”按钮,程序将打开数据库。如果您将以上信息填错也不要紧,程序会提示哪里出现了问题。此外您可以在登录前点击“测试连接”按钮,程序也会告诉您是否能连接到指定的数据库。 打开数据库后程序左边部分如何使用? 成功连接到数据库以后,数据库的Schema和table结构会在画面的左边以树的形式展现出来,如果展现的内容过多,您还可以在上方的“过滤器”输入栏中输入关键字以缩小展现范围。在这颗树中,表格(table)是以小圆点的方式展现的,左键点击这个圆点,程序将在右侧打开一个Sql语句操作窗口,并执行“select * from table”语句,最后在下方以表格的形式展现给您;如果您用右键点击这个圆点,程序将弹出一个右键菜单,选择其中的项目您将可以在右边的Sql语句操作窗口中得到单表的字段信息,创建(insert),查询(select),更新(update),删除语句(delete)及建表语句(create table),单表对应Pojo文件,单表的Hibernate映射文件等文字。 打开数据库后程序右边部分是如何使用的? 用左右键点击表格后,您将在右侧看到一个“Sql语句操作窗口”,它分成三部分:工具栏菜单,输入窗口和输出窗口。输入窗口是用以输入,编辑和整理Sql 语句的;工具栏菜单中的一大排按钮都是为编辑处理输入窗口中的文字而准备的;输出窗口则是展示Sql语句执行后的结果的,如果是查询语句,它会以表格的形式告知您查询的结果,如果是其它语句,它会以文字的形式告知。通常的操作手法是,先在输入窗口中用鼠标选中您要操作的文本,再在工具栏菜单中点击执行特定操作的按钮,然后在下方的输出窗口中就能看到具体的结果,当然如果仅是文本编辑操作的话输出窗口是不会有反应的。 如何执行Sql语句? 程序员和数据库管理员总是习惯使用语句来操作数据库,这也是本软件的最重要功能之一。执行Sql语句的过程具体来说是这样做的,首先,在输入窗口输入您向执行的Sql语句,如“select * from table”之类,当然您更可以通过表格的右键菜单来获得常用的sql语句(在输入或是粘贴文本的过程中,Sql语句中的关键字会以蓝色显示,这是语法高亮功能所致);其次,你需要选中你想执行的文本,再点击工具栏菜单中的向右三角形按钮,这段文本将得到执行,执行结果将在下方的输出窗口得到展示。如果您执行的是查询语句,输出窗口将以表格的形式列出查询结果集的字段和内容;如果您执行的是删除,更新,添加,修改表等语句或是执行错误的Sql文本,输出窗口将以文本形式告知执行结果。另外工具栏菜单中的双向右三角形按钮用于批量执行Sql语句,它以分号“;”来作为每段Sql的分隔标志,然后分别执行每段。 如何快速调整对执行查询语句后得到的表格列宽度? 如果您想自动调整某列的宽度,可以双击这列的表头,此后这列的宽度会根据这列的最长文字进行调整;您还可以在表格上点击右键,选择“调整列宽为最适合状态”一项,那么所有的列宽都会进行调整。 如何得到执行查询语句后得到的表格的内容? 您还可以在表格上点击右键,选择“下载表格为CSV文件”一项,此后查询语句和得到的结果都会被放入一个CSV文件中。CSV是一中文本文件,但您可以用Excel打开它,也会得到xls文件一样的效果。 在新增或是删除一张表后,在左边的树中为什么没有相应的变化? 新增或是删除一张表后,您需要手动执行一下左上方的更新按钮(最上方的大图标中第一个),此后程序会重新载入数据库的Schema和table,这样您刚才对表格进行增删操作就能体现出来。 如果我需要常打开数据库进行操作或是需要常操作多个数据库,程序能为我提供那些便利? 本软件有记忆功能,如果您正确连接到一个数据库,那么相应的信息如IP地址,数据库名,数据库类型,连接数据库的用户名和密码都会被记忆下来,这样下次打开时就不用重复输入了。如果您需要常操作多个数据库,您可以通过保存按钮(最上方五个大图标中的第二个)将数据库信息保存成XML文件,这样在登录画面中就可以通过“打开文件按钮”得到相应的数据库信息。
MaxKey(马克思的钥匙)用户单点登录认证系统(Sigle Sign On System),寓意是最大钥匙,是业界领先的企业级IAM身份管理和身份认证产品,支持OAuth 2.0/OpenID Connect、SAML 2.0、JWT、CAS等标准化的开放协议,提供简单、标准、安全和开放的用户身份管理(IDM)、身份认证(AM)、单点登录(SSO)、RBAC权限管理和资源管理等。 MaxKey主要功能: 1、所有应用系统共享一个身份认证系统 2、所有应用系统能够识别和提取ticket信息 3、提供标准的认证接口以便于其他应用集成SSO,安全的移动接入,安全的API、第三方认证和互联网认证的整合。 4、提供用户生命周期管理,支持SCIM 2协议,基于Apache Kafka代理,通过连接器(Connector)实现身份供给同步。 5、认证中心具有平台无关性、环境多样性,支持Web、手机、移动设备等, 如Apple iOS,Andriod等,将认证能力从B/S到移动应用全面覆盖。 6、多种认证机制并存,各应用系统可保留原有认证机制,同时集成认证中心的认证;应用具有高度独立性,不依赖认证中心,又可用使用认证中心的认证,实现单点登录。 7、基于Java平台开发,采用Spring、MySQL、Tomcat、Apache Kafka、Redis等开源技术,支持微服务,扩展性强。 8、许可证 Apache License, Version 2.0,开源免费。     MaxKey单点登录认证系统 更新日志: v2.7.0 加入Dromara开源组织,官方网站的优化,文档优化 BootJar,Docker,Standard三种打包方式的配置优化 openldap,activedirectory密码验证支持 数据库访问注释由@Service改为@Repository cas logout优化支持 CAS单点注销及返回数据类型适配器的优化 CAS返回数据类重构 CAS地址优化统一配置到常量类CasConstants 注销空指针异常BUG OAuth2地址优化统一配置常量类OAuth2Constants OAuth2 Token多次调用时认证转换的BUG ExtendApi标准优化 增加基于时间签名的ExtendApi适配器 返回数据Constants整合 扩展数据配置优化 LDAP和MS AD固定属性Constants SpringSecurity OAuth 2客户端登录适配 移除Desktop的支持,后续可以开发FormBase的适配器定制 application.properties profiles的优化,不同环境启动更加简单 删除maxkey.properties,配置整合到 application.properties 增加适配器注册功能,在配置应用时只需选择对应的适配器 增加Synchronizer接口同步的功能 增加TimeBased OTP接口支持 XSS安全防护功能 禅道项目管理系统单点登录适配 GitLab单点登录适配 云速邮箱单点登录适配 JumpServer开源堡垒机单点登录适配 华为云单点登录适配 Jenkins单点登录适配 通知公告简单功能实现 查询参数优化 SDK优化 依赖jar引用、更新和升级
对接致远OA单点登录,需要实现以下步骤: 1. 在致远OA系统中,配置单点登录参数,包括应用系统的名称、登录地址、退出地址等信息,并生成密钥和向量。 2. 在应用系统中,使用C#语言实现单点登录的逻辑,包括接收和解析来自致远OA系统的加密字符串、校验签名、验证时间戳等操作。 以下是一个简单的示例代码,用于演示如何实现对接致远OA单点登录: ```csharp using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Security.Cryptography; using System.Text; public partial class SsoLogin : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // 从请求参数中获取加密字符串 string encryptData = Request.QueryString["data"]; // 解密字符串 string decryptedData = Decrypt(encryptData); // 解析字符串 Dictionary<string, string> dataDict = ParseData(decryptedData); // 校验签名 if (!VerifySignature(dataDict)) { Response.Write("Invalid signature"); return; } // 验证时间戳 if (!VerifyTimestamp(dataDict)) { Response.Write("Invalid timestamp"); return; } // 获取用户名和用户ID string username = dataDict["username"]; string userId = dataDict["userid"]; // 在应用系统中进行单点登录 // ... // 跳转到应用系统的首页 Response.Redirect("home.aspx"); } // 解密方法 private string Decrypt(string encryptData) { // 根据实际情况,使用致远OA系统中生成的密钥和向量进行解密 byte[] key = Encoding.ASCII.GetBytes("1234567890123456"); byte[] iv = Encoding.ASCII.GetBytes("abcdefghijklmnop"); byte[] encryptedBytes = Convert.FromBase64String(encryptData); string decryptedData = ""; using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider()) { aes.Key = key; aes.IV = iv; ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV); using (MemoryStream ms = new MemoryStream(encryptedBytes)) { using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) { using (StreamReader sr = new StreamReader(cs)) { decryptedData = sr.ReadToEnd(); } } } } return decryptedData; } // 解析数据方法 private Dictionary<string, string> ParseData(string decryptedData) { Dictionary<string, string> dataDict = new Dictionary<string, string>(); string[] dataArray = decryptedData.Split('&'); foreach (string data in dataArray) { string[] keyValue = data.Split('='); dataDict[keyValue[0]] = keyValue[1]; } return dataDict; } // 校验签名方法 private bool VerifySignature(Dictionary<string, string> dataDict) { // 根据实际情况,使用致远OA系统中生成的密钥和向量进行签名校验 string key = "1234567890123456"; string iv = "abcdefghijklmnop"; string data = dataDict["data"]; string signature = dataDict["signature"]; byte[] keyBytes = Encoding.ASCII.GetBytes(key); byte[] ivBytes = Encoding.ASCII.GetBytes(iv); byte[] dataBytes = Encoding.ASCII.GetBytes(data); using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider()) { aes.Key = keyBytes; aes.IV = ivBytes; ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV); using (MemoryStream ms = new MemoryStream(dataBytes)) { using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) { using (StreamReader sr = new StreamReader(cs)) { string decryptedData = sr.ReadToEnd(); string computedSignature = ComputeSignature(decryptedData, key); return signature.Equals(computedSignature); } } } } } // 计算签名方法 private string ComputeSignature(string decryptedData, string key) { byte[] keyBytes = Encoding.ASCII.GetBytes(key); byte[] dataBytes = Encoding.ASCII.GetBytes(decryptedData); HMACSHA1 hmac = new HMACSHA1(keyBytes); byte[] signatureBytes = hmac.ComputeHash(dataBytes); return Convert.ToBase64String(signatureBytes); } // 验证时间戳方法 private bool VerifyTimestamp(Dictionary<string, string> dataDict) { // 根据实际情况,可以设置一个有效时间段,超过该时间段的请求将被视为无效 string timestamp = dataDict["timestamp"]; DateTime dateTime = DateTime.ParseExact(timestamp, "yyyyMMddHHmmss", null); TimeSpan timeSpan = DateTime.Now - dateTime; return timeSpan.TotalMinutes <= 5; } } ``` 以上代码仅作为参考,实际对接过程中需要根据具体情况进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值