2013-03-14 2 views
1

타사 라이브러리 'Waffle'을 사용하여 Windows 인증을 구현하려고합니다. 내가 직면하고있는 도전은 사용자 ID와 도메인을 알고있는 경우 사용자의 메일 ID를 검색하는 방법입니다. 예를 들어 사용자 ID를 XYZ \ phembr로 가져올 수 있으며 SMTP 서버에서 메일 주소 (이 경우 [email protected])를 가져 오려고합니다. 다음은 내가 사용하고있는 JSP 코드와 내가 얻는 결과이다.jsp를 사용한 Windows 인증 및 전자 메일 주소 검색

<%@page import="java.security.Principal" %> 

<%@page import="waffle.windows.auth.WindowsAccount" %> 

<%@page import="waffle.servlet.WindowsPrincipal" %> 

<%@page import="com.sun.jna.platform.win32.Secur32" %> 

<%@page import="com.sun.jna.platform.win32.Secur32Util" %> 

<% 

if (request.getParameter("logoff") != null) { 

session.invalidate(); 

response.sendRedirect("index.jsp"); 

return; 

} 

%> 

<html> 

<head> 

<title>Protected Page for Examples</title> 

</head> 

<body bgcolor="white"> 

Welcome <b><%= Secur32Util.getUserNameEx(Secur32.EXTENDED_NAME_FORMAT.NameDisplay) %></b> <br> 

You are logged in as remote user <b><%= request.getRemoteUser() %></b> in session <b><%= session.getId() %></b>.<br> 

You are impersonating user <b><%= Secur32Util.getUserNameEx(Secur32.EXTENDED_NAME_FORMAT.NameSamCompatible) %> </b>. 

<br><br> 

<% 

if (request.getUserPrincipal() != null) { 

%> 

Your user principal name is <b><%= request.getUserPrincipal().getName() %></b>.<br> 



Your email is <b><%= Secur32Util.getUserNameEx(Secur32.EXTENDED_NAME_FORMAT.NameUserPrincipal) %></b>. 



<br><br> 

<% 

} else { 

%> 

No user principal could be identified. 

<br><br> 

<% 

} 

%> 

</body> 

내가 얻고 출력은 다음과 같습니다 (나는 [email protected]하지 [email protected]을 가지고해야합니다)

Welcome Prashant Kumar Hembrom 

You are logged in as remote user XYZ\phembr in session DB5376CCEF5FA13F6059AC679F0B95BE. 

You are impersonating user XYZ\phembr . 



Your user principal name is XYZ\phembr. 

Your email is [email protected] 

답변

1

이가에 대한 답변 FAQ : https://github.com/dblock/waffle/blob/master/Docs/faq/AdditionalActiveDirectoryInfo.md

Waffle에서 직접 할 수 없습니다. Windows에서는 ADSI로 Active Directory를 쿼리하여 수행 할 수 있습니다. 여기에는 로그온에서 얻은 SID로 사용자 레코드를 찾고 추가 정보를 가져 오는 작업이 포함됩니다.

두 구현 :