IWA在非AC做代理的场景下的流程图如下:
(1)、当客户端在访问网络的时候,经过我们的AC设备。
(2)、我们判断客户端未认证通过,因此我们会把客户端的访问请求截获,并回复一段我们自己的内容给客户端浏览器。
(3)、客户端浏览器收到该内容后会根据我们的回复内容访问我们apache的特定目录。
(4)、Apache会向客户端浏览器索要票据来验证客户端是否有权限访问我们apache(401请求)。
(5)、客户端浏览器在收到该请求后,会将当前用户的信息加密后发送给我们apache。
(6)、Apache收到信息后,调用mod_auth_kerb解密用户信息,获取到客户端的用户名和ip,发送给authd认证上线。从而完成整个的认证过程。
AC或者SG使用代理的情况下,可以参考附件
IWA单点登录实现原理
2、AC给浏览器返回一段JS代码,会自动发起请求http://acip/src/iwa/index.js(注意部分版本是80部分版本是100),其中会携带Authorization字段进行认证。同时不断向AC询问此PC是否上线成功。
划重点
1、IWA单点登录过程是很依赖前端的,index.js会发出认证请求(只发一次),接着不断向AC询问本机是否已经上线,若AC回复该机已上线,则控制浏览器跳转到指定页面(配置啥页面就该是啥页面),若询问多次(一般是500ms/次,共5次)仍未上线,视为登录失败。
2、排查过程中,用浏览器直接访问这个URL抓包:
①如果http请求中带有Authorization字段,而AC返回“Username and password need post”,那问题一定是出在凭据校验上。
②如果返回“You need Authorization”,那就是凭据校验成功,但是logon的过程中出现了问题(限制登录、绑定校验、认证方式等等)。此外,AC校验PC发送的票据是不需要与域控通信的,所以抓域控的包是抓不到的。