您的位置:首页 > 其它

使用 Microsoft 客户端配置单一登录

2010-12-31 13:25 288 查看
以下部分描述如何通过基于简单和受保护协商(SimpleandProtectedNegotiate,简称SPNEGO)机制和Kerberos协议的Windows身份验证以及WebLogic协商标识声明提供程序来使用Microsoft客户端设置单一登录(SingleSign-On,简称SSO)。

Microsoft客户端单一登录概述

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

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

创建WebLogicServer的Kerberos标识

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

创建JAAS登录文件

配置标识声明提供程序

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

验证Microsoft客户端的SSO配置



Microsoft客户端单一登录概述

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

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



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

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

在主机上安装:

Windows2000或更高版本

完全配置的ActiveDirectory身份验证服务。特定的ActiveDirectory要求包括:

用于映射Kerberos服务的用户帐户

这些帐户的服务委托人名称(ServicePrincipalName,简称为SPN)

创建Keytab文件并复制到WebLogicServer域的启动目录中

已正确安装WebLogicServer并将其配置为通过Kerberos进行身份验证(如本文所述)

在客户端系统上安装:

Windows2000ProfessionalSP2或更高版本

以下类型的客户端之一:

经过适当配置的InternetExplorer浏览器。支持InternetExplorer6.01或更高版本。

.NETFramework1.1和经过适当配置的WebService客户端。

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



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

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

在ActiveDirectory中定义一个委托人来表示WebLogicServer。Kerberos协议使用Microsoft中的ActiveDirectory服务器来存储所需的安全信息。

需要在Microsoft域中访问的任何Microsoft客户端都必须设置为使用Windows集成身份验证,以便在可用时发送Kerberos票据。

在WebLogicServer域的安全领域中,配置一个协商标识声明提供程序。SSO中使用的Web应用程序或WebService需要以特定的形式设置身份验证。此外,还必须创建定义WebLogicServer的Kerberos标识的位置的JAAS登录文件。

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

将网络域配置为使用Kerberos。请参阅将网络域配置为使用Kerberos


创建WebLogicServer的Kerberos标识。

在运行WebLogicServer的主机的ActiveDirectory中创建用户帐户。

创建该帐户的服务委托人名称。

创建该帐户的用户映射和keytab文件。

请参阅创建WebLogicServer的Kerberos标识


选择一个Microsoft客户端(WebService或浏览器)并将其配置为使用Windows集成身份验证。请参阅将Microsoft客户端配置为使用Windows集成身份验证


将WebLogicServer域设置为使用Kerberos身份验证。

创建一个JAAS登录文件并使其指向步骤1中创建的Microsoft域中的ActiveDirectory服务器和keytab文件。请参阅创建JAAS登录文件


配置WebLogicServer安全领域中的协商标识声明提供程序。请参阅配置协商标识声明提供程序


使用特定的启动参数启动WebLogicServer。请参阅通过启动参数在WebLogicServer中使用Kerberos身份验证


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



将网络域配置为使用Kerberos

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

要在网络域控制器中配置Kerberos,需要将每台要访问KDC的计算机配置为查找Kerberos领域和可用的KDC服务器。在Windows计算机上,修改
C:/winnt

文件夹中的
krb5.ini

文件。在UNIX计算机上,修改
krb5.conf

文件,其默认位置为
/etc/krb5/

。例如:

清单6-1示例krb5.ini文件

[libdefaults]

default_realm=MYDOM.COM(Identifiesthedefaultrealm.SetitsvaluetoyourKerberosrealm)

default_tkt_enctypes=des-cbc-crc

default_tgs_enctypes=des-cbc-crc

ticket_lifetime=600


[realms]


MYDOM.COM={

kdc=(hostrunningtheKDC)

(ForUnixsystems,youneedtospecifyport88,asin:88)

admin_server=MachineA

default_domain=MYDOM.COM


[domain_realm]

.mydom.com=MYDOM.COM


[appdefaults]

autologin=true

forward=true

forwardable=true

encrypt=true



创建WebLogicServer的Kerberos标识

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

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

setspn—

Windows2000资源工具包

ktpass—

Windows2000分发CD中的
ProgramFiles/SupportTools


注意:

setspn

ktpass

ActiveDirectory实用工具都是Microsoft的产品。因此,BEASystems不提供有关此类实用工具的完整文档。有关详细信息,请参阅适当的Microsoft文档。

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

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

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

,则在ActiveDirectory中创建一个名为
myhost.

的用户。

请记录下创建用户帐户时定义的密码。在步骤3中将需要使用该密码。请勿选择“
Usermustchangepasswordatnextlogon

”选项或任何其他密码选项。

配置新用户帐户以使其符合Kerberos协议。此用户帐户的加密类型必须是DES并且必须要求进行Kerberos预身份验证。

在左窗格的“用户”树中,用鼠标右键单击该用户帐户的名称,然后选择“属性”。

选择“帐户”选项卡并选中“此帐户需要使用DES加密类型”框。确保未选中其他框,尤其不要选中“不要求进行Kerberos预身份验证”框。

设置加密类型可能会损坏密码。因此,应重置用户密码,方法是用鼠标右键单击该用户帐户的名称,选择“重设密码”,然后重新输入之前指定的同一密码。

使用
setspn

实用工具为步骤1中创建的用户帐户创建服务委托人名称(SPN)。请输入下列命令:

setspn-ahost/[code]myhost.example.commyhost

[/code]

setspn-aHTTP/[code]myhost.example.commyhost

[/code]

使用以下命令检查与您的用户帐户关联的SPN:

setspn-L[code]accountname

[/code]

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

使用
ktpass

实用工具创建用户映射:

Windows

ktpass-princhost/

myhost@Example.CORP

-pass

password

-mapusermyhost-outc:/temp/myhost.host.keytab


创建keytab文件。在Windows上,
ktab

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

实用工具。

Windows

在运行WebLogicServer的主机上运行
ktab

实用工具来创建keytab文件:

ktab-k[code]keytab-filename

-a
myhost@Example.CORP

[/code]

将keytab文件复制到WebLogicServer域的启动目录中。

UNIX

使用
ktpass

实用工具并通过类似以下形式的命令创建用户映射,其中
password

是在步骤1中创建的用户帐户的密码:

ktpass-princHTTP/

myhost@Example.CORP

-pass

password

-mapusermyhost

-outc:/temp/myhost.HTTP.keytab

[/code]

将步骤a中创建的keytab文件复制到WebLogicServer域的启动目录中。

以根用户身份登录,然后使用
ktutil

实用工具将它们合并到一个keytab文件中,如下所示:

ktutil:"rktmyhost.host.keytab"

ktutil:"rktmyhost.HTTP.keytab"

ktutil:"wktmykeytab"

ktutil:"q"


运行
kinit

实用工具验证Kerberos身份验证是否正常运行。

kinit-k-t

keytab-file


account-name

[/code]

其输出应类似以下内容:

NewticketisstoredincachefileC:/Documentsand

Settings/Username/krb5cc_MachineB

[/code]



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

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



配置.NETWebService


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

在WebService的
web.config

文件中,将IIS和ASP.NET的身份验证模式设置为Windows,如下所示:



此设置通常是默认设置。

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

例如,如果某项WebService的WebService客户端由代理对象
conv

表示,则语法为:

/*

*明确将凭据传递到WebService

*/

conv.Credentials=

System.Net.CredentialCache.DefaultCredentials;




配置InternetExplorer浏览器


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



配置本地Intranet域


在InternetExplorer中,选择“工具”>“Internet选项”。

选择“安全”选项卡。

选择“本地Intranet”,然后单击“站点”。

在“本地Intranet”弹出窗口中,确保选中“包括所有不使用代理服务器的站点”和“包括没有列在其他区域的所有本地(Intranet)站点”选项。

单击
“高级”


在“本地Intranet”(高级)对话框中,添加所有要在参与SSO配置的WebLogicServer实例中使用的相对域名(例如,
myhost.example.com

),然后单击“确定”。



配置Intranet身份验证


选择“工具”>“Internet选项”。

选择“安全”选项卡。

选择“本地Intranet”,然后单击“自定义级别...”。

在“安全设置”对话框中,滚动到“用户验证”部分。

选择“只在Intranet区域自动登录“。使用此选项时,用户不必重新输入登录凭据,它是此解决方案的关键部分。

单击“确定”。



验证代理设置


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

选择“工具”>“Internet选项”。

选择“连接”选项卡,然后单击“局域网设置”。

验证代理服务器地址和端口号是否正确。

单击“高级”。

在“代理服务器设置”对话框中,确保在“例外”字段中输入了所有需要的域名。

单击“确定”关闭“代理服务器设置”对话框。



为InternetExplorer6.0设置集成身份验证


如果运行InternetExplorer6.0,则除了已描述的设置外,还需要进行另一项设置。

在InternetExplorer中,选择“工具”>“Internet选项”。

选择“高级”选项卡。

滚动到“安全”部分。

确保选中“启用集成Windows身份验证(需要重启动)”,然后单击“确定”。

如果未选中此选项,请重新启动计算机。



创建JAAS登录文件

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

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

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

com.sun.security.jgss.initiate{

    com.sun.security.auth.module.Krb5LoginModulerequired

    principal="[code]myhost@Example.CORP

"useKeyTab=true

    keyTab=
mykeytab

storeKey=true;

};

com.sun.security.jgss.accept{

    com.sun.security.auth.module.Krb5LoginModulerequired

    principal="
myhost@Example.CORP

"useKeyTab=true

    keyTab=
mykeytab

storeKey=true;

};[/code]



配置标识声明提供程序

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




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

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

-Djava.security.krb5.realm=[code]Example.COR

P

-Djava.security.krb5.kdc=
ADhostname

-Djava.security.auth.login.config=krb5Login.conf

-Djavax.security.auth.useSubjectCredsOnly=false

-Dweblogic.security.enableNegotiate=true[/code]

其中

java.security.krb5.realm定义运行ActiveDirectory服务器的Microsoft域。

java.security.krb5.kdc定义运行ActiveDirectory服务器的主机名。

java.security.auth.login.config定义Kerberos登录信息的位置。

javax.security.auth.useSubjectCredsOnly指定可以使用主题凭据之外的身份验证机制。

weblogic.security.enableNegotiate可使WebLogicServer中的Servlet容器支持SPNEGO使用的协商标记。

 

原文出处(点击此处)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐