您的位置:首页 > 编程语言 > VB

获取登录域帐号信息方式之 —-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 下,会弹出输入域帐号的信息的对话框, 这个问题在之前的一篇也提到过。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: