加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

获取登录域帐号信息方式之 —-IIS(VB)

发布时间:2020-12-17 07:56:41 所属栏目:百科 来源:网络整理
导读:前言 java web 项目如何获取客户端登录帐号信息(用于SSO或其他) 之前总结过一篇在Java 的Web 项目中获取客户端帐号信息的文章。参见以上链接的内容。 除了那些方式之外, 还可以使用IIS 和VB 来获取客户端域帐号信息。 (这里介绍的使用场景还是在Java web

前言

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 下,会弹出输入域帐号的信息的对话框, 这个问题在之前的一篇也提到过。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读