Windows 集成验证功能块概要设计(三)

1.1           Kerberos身份验证

    1.1.1         认证过程

客户端IE申请页面

GET /auth/portal/tidal HTTP/1.1

Accept: */*

Accept-Language: zh-cn

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; MAXTHON 2.0)

Host: domain195

Connection: Keep-Alive

服务端返回无授权回应

HTTP/1.1 401 Unauthorized

Content-Type: text/html

Server: Resion/3.1.6

WWW-Authenticate: Negotiate

Date: Sat, 10 Oct 2009 17:27:18 GMT

客户端选择Kerberos验证,发送验证票到服务端

客户端在域中,并且以域账户登录,所以客户端IE选择使用Kerberos身份验证,发送与用户的验证票到服务端。

GET /iisstart.htm HTTP/1.1

Accept: */*

Accept-Language: zh-cn

UA-CPU: x86

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; MAXTHON 2.0)

Host: domain195

Connection: Keep-Alive

Authorization: Negotiate YIIEzQYGKwYBBQUCoIIEwTCCBL2gJDAiBgkqhkiC9xIBAgIGCSqGSIb3EgECAgYKKwYBBAGCNwICCqKCBJMEggSPYIIEiwYJKoZIhvcSAQICAQBuggR6MIIEdqADAgEFoQMCAQ6iBwMFACAAAACjggOiYYIDnjCCA5qgAwIBBaEOGwxTWkJUSS5HT1YuQ06iFzAVoAMCAQKhDjAMGwRIVFRQGwRsb2dzo4IDaDCCA2SgAwIBF6EDAgEMooIDVgSCA1IeN8fZeLtzkw+5H8HOKmM8zgDOVL5GmeXoS8dMgE20RtI14EVWWZLn2j0AMXTqMOA550Grsadh89vZ89+6vprkVL0v49FM+gxHFCmZSOvLTIawBqXvLU6w1Pni8PN1pbhOKCRVON6+5XH4MN8Rfuqpyy1A/2gfeQIfLMMHs73yohp7h7QJP29b61jm0vj1xE0jEP7EupHlr225vrrVCnktTksbyqi88kIZlCB84J1gTqYoNeOycn4Qzvv8x6z1AsCfo2SBSwo1tj38BK2Fbu+BRXw26RrebGWPkILYwqED7bSR+RlDdokEhjubbyaWcnIjiSXZaN5kQqZQqms3iqhUrZpX7RaaV5BsMOgJs7LwYmc3uM5v7YqljwFD3T44XfpAiS3xlyirP3modOR1l+hV2xdIIFusXtRzY7rTkmEb2F3dGjTiMXySrc0GGhe3TrIeH9nB/2Udo/Z9m0ifXC0EU2fFogefmDc322vHhhv9gEYccG44Q/cnWx8gY9GfWCRihlaefGK+DmCvm+515UFYeIcG5KafXBQw3KX7MjI4/4hlAh3mQNn9p3nX0ePy1G1RRV2SToN7eg1PkaaYXDeC6MSIwCb53MfebzpyN0LKzmPZ6GneLYbyBIpANzPNoXz/LADA1h/l8F098ti1fThPVkUgoehgy1iyovTXyqJg6rojI0juIH7fKfc/UpfO+eLMhsquhH1KNjkCTD2CkdUfcsEU7B15j15p1OyGeg5/tEbRE67+NAWkfLSPp5R3tzGqjAh39w8n/8EWot9DBlHwk+qJp3rMFJZIvNtmXuvqnUW1NGpO1GIf78PBixyFwrJSo5syTfCiWIcw9YQ7MyvuyynAmsXeaI5+OP/GfmGpnvt5kMznu5q/nNf7LMV8n6x2+lmNlcPJiWr+KckPM9Nvntw2h/bl2qGnHDdOqNYI2N0VxzIm8wY6dWS3NIwlGl/usMjjebaELFP6rdHjpVG6pziJYjrBrws5DbqCxJ1EOeQdBiT8l1O6OUQqdOBVZH6/bj5MkLghWv0edHG8TJ4OGa69nMHDwTBOyuyRbTr5uWWFnESdyAGGbfGlJjuvSSzxgZViMSB2j8Ulk8x8MCqrupEK2i0UR6HrMNMJIDJsVcXTpIG6MIG3oAMCAReiga8EgazteAbcguseBpQnHeJihLFO78PfjI2Qop+MkH9jCOrvO9cQns1GzOKByoAbeP307QQq4zbaDF3EJlOC//4k4A6W4dc4k5lNeOgwR4LEvbIQKpdlljFiW8XUb+IgovsOlZEG0qFQgZY0I35I4Uvk/2dDkz06DGiDsQ0IENrRIMT4/7xgMSmkzspO2ojSbG5aKlbjK203QxMlkEoxb8WpJFZQggUqrLAr0q2graET

服务端验证通过,返回资源

HTTP/1.1 200 OK

Server: Resion/3.1.6

WWW-Authenticate: Negotiate oYGgMIGdoAMKAQChCwYJKoZIgvcSAQICooGIBIGFYIGCBgkqhkiG9xIBAgICAG9zMHGgAwIBBaEDAgEPomUwY6ADAgEXolwEWrdYWb37ROEMMnP/4vTBwSe9hVe4XklXCWqFKG16d53aBUiTEem+lrFE8ycBgSln3zme63lKfSn9UHoNTlT100T86wxllsyrrMe437ElPcxI4pgcv9rNKU9aKg==

Location http://domain195/auth/portal/tidal/

Content-Type text/html

Content-Length 73

Date: Sat, 10 Oct 2009 17:27:18 GMT

 

不管客户端跟服务器是否在域、也不管客户端是否以域帐号登陆,只要客户端以ip地址访问服务器,那么客户端就会选择NTLM方式验证,并且不会直接发送客户端登录用户的用户名和密码给服务器,而是会弹出一个对话框要求用户输入用户名和口令,然后发送到服务端验证。

集成 Windows 身份验证Kerberos的验证方式是 Intranet 环境中最好的身份验证方案,在这种用户拥有 Windows 域帐户,Kerberos验证不在网络上传递用户密码,只用传送一个用户验证票。NTLM要传送用户的密码,但是密码经过处理后派生出一个8字节的key加密质询码,也是比较安全的。

    1.1.2         功能实现

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

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

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

2.       配置新用户帐户以使其符合 Kerberos 协议。

此用户帐户的加密类型必须是 DES 并且必须要求进行 Kerberos 预身份验证。

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

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

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

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

setspn -a host/domain195.hq.ctc.com domain195

setspn -a HTTP/domain195.hq.ctc.com domain195

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

              setspn L account name

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

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

ktpass -princ host/domain195.hq.ctc.com@HQ.CTC.COM -pass password -mapuser domain195 -out c:\temp\domain195.keytab

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

Windows:

在运行 WebLogic Server 的主机上运行 ktab 实用工具来创建 keytab 文件:

 

ktab -k domain195.keytab -a HTTP/domain195.hq.ctc.com@HQ.CTC.COM

7.        可以通过ktab -l -k domain195.keytab, 来看看里面究竟有针对什么ServiceKey

      

创建JAAS登录文件

JAAS 登录文件指明安全框架使用 Kerberos 身份验证并定义 Kerberos 标识信息的 keytab 文件的位置。该文件的位置在java.security.auth.login.config 启动参数中指定.

 

tidalsoft.webconsole.server { 

       com.sun.security.auth.module.Krb5LoginModule

       required

       debug=true

       doNotPrompt=true

       storeKey=true

       useKeyTab=true

       keyTab="/work/domain195.keytab"

       principal="HTTP/domain195.hq.ctc.com@HQ.CTC.COM";

};

 

使用 Kerberos 身份验证,需设置下列启动参数:

-Djava.security.krb5.realm=HQ.CTC.COM
-Djava.security.krb5.kdc=10.3.43.111
-Djava.security.auth.login.config=login.config
-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 指定可以使用主题凭据之外的身份验证机制。

 

相关技术总结

JAAS

GSS-API

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值