获取登录域帐号信息方式之 —-IIS(VB)
2014-05-08 19:03
330 查看
前言
java web 项目如何获取客户端登录帐号信息(用于SSO或其他)
之前总结过一篇在Java 的Web 项目中获取客户端帐号信息的文章。参见以上链接的内容。除了那些方式之外, 还可以使用IIS 和VB 来获取客户端域帐号信息。
(这里介绍的使用场景还是在Java web 项目中使用IIS 和VB 的方式来获取域帐号信息。)
实际使用场景
环境状况1. Java web 项目, 部署在 机器A 的tomcat 上(不在域)
2. IIS 服务器, 在机器B 上(在域上)
3. 客户端机器都在域内,客户端访问Java web 项目.
要实现的功能是:
在Java web 项目中, 可以自动获取客户端的域登录用户名。
实现思路
实现的思路就是使用IIS 和VB ,web project root url: http://webprjurl
IIS root url: http://iisrooturl
1. 在IIS 中建立一个 aspx 和 aspx.vb 文件, 用于获取 客户端帐号。
以 response.write 的方式 一个 iframe, src 为 http://webprjurl/ADLoginFrame.jsp?username=XX
2. 在web 项目的jsp 文件中嵌入一个 iframe, iframe 的src 是 以上的IIS的url
http://iisrooturl/getADUser.aspx
3. 在 jsp 的 body 的onload 中, 读取 iframe的src, 解析出 username
特别需要说明的部分:
你可能会问, 在以上步骤 1 中,既然已经取得帐号信息, 是否之间调用iframe parent 的js 是否就可以设置帐号信息了呢?
为什么还要整两个 iframe?
原因是: IIS 和 Web 可能在不同的域下,使用iframe 的parent 的方式就相当于在IIS 中访问tomcat , 涉及到js 的跨域访问,是会别禁止掉的。
所以使用两个iframe 避免跨域访问出现的问题。
实际例子代码:
1. IIS 中 getADUser.aspx 和 getADUser.aspx.vb
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="getADUser.aspx.vb" Inherits="AdminADUser" %>
Partial Class AdminADUser Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.Response.Write("<iframe src='http://webprjurl/ADLoginFrame.jsp?username="+Request.ServerVariables("LOGON_USER")+"'></iframe>") Me.Response.end End Sub End Class
2. Java web 中 ADLoginFrame.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> <script> window.onload = function(){ var text = window.location.href.split('=')[1] //console.log(parent.parent) parent.parent.setADDomainUser(text); } </script> </head> <body> </body> </html>
3. Java web 中的 getLoginInfo.jsp
这是调用的主页面, 上面window.onload 中的 parent.parent 对应到的就是这个页面。
<body> <iframe id="loginADFrame" src="http://iisurl/getADUser.aspx"></iframe> </body>
总结
以上方法在IE 和 Chrome 中使用是正常的,但是在firefox 下,会弹出输入域帐号的信息的对话框, 这个问题在之前的一篇也提到过。
相关文章推荐
- 获取登录域帐号信息方式之 —-IIS(VB)
- c# 模拟域帐号登录并获取登录信息
- java web 项目如何获取客户端登录帐号信息(用于SSO或其他)
- Android——第三方登录——新浪微博——获取用户信息——账户绑定
- Java基础知识强化之网络编程笔记22:Android网络通信之 Android常用OAuth登录(获取个人信息)
- 微信小程序维护登录态与获取用户信息
- python 利用selenium模拟登录帐号验证网站并获取cookie
- 爬虫程序获取登录Cookie信息时遇到302,怎么处理
- 在网页中获取天气信息方式介绍
- Java HttpClient 实现自动登录与获取网页信息
- VB.NET下用FSO(文件系统对象模型)实现获取硬盘信息
- c# 微信模拟登录抓取公共帐号发送图文信息
- 微信小程序新的授权方式,获取用户信息
- Android Twitter第三方登录&获取用户信息
- 获取进程信息的两种方式
- 安卓获取屏幕宽高/分辨率相关信息的方式
- Scala获取异常信息后将其放入String中的实现方式
- VB.NET获取硬盘信息的几种方法
- ABAP获取用户登录详细信息并已邮件附件的形式发送给你