ldap過濾器
① LDAP在JAVA中如何模糊查詢
/**
* 獲得LDAP連接(不通過連接池,直接獲得連接)
* @return
* @throws Exception
*/
private javax.naming.directory.DirContext getDirContext() throws Exception
{
DirContext ctx = null;
java.util.Hashtable env = new java.util.Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, user);
env.put(Context.SECURITY_CREDENTIALS, pwd);
ctx = new InitialDirContext(env);
return ctx;
}
/**
* 返回用戶查詢介面
* @param DN 查找范圍 ou=test,dc=abcd,dc=com
* @param filter 過濾條件 cn=*
* @param myserach 搜索范圍
* @return LDAP標准介面
* @throws Exception
*/
public javax.naming.NamingEnumeration getFilter(String DN,String filter,int myserach) throws Exception
{
DirContext ctx = getDirContext();
try
{
NamingEnumeration em;
SearchControls con = new SearchControls();
con.setSearchScope(myserach);
em = ctx.search(DN, filter, con);
return em;
}
finally
{
//
}
}
/**
* 設置條件查找
* @param dn 查找的根結點
* @param filter 查找條件
* @param level 查找范圍
* @return 返回一個由DN組成的JAVA STRING 列表
* @throws Exception
*/
public java.util.Vector getfilterNodes(String dn,String filter,int level) throws Exception
{
java.util.Vector ve=new java.util.Vector();
NamingEnumeration em=getFilter(dn,filter,level);
while(em!=null && em.hasMoreElements())
{
SearchResult rs=(SearchResult)em.nextElement();
String db=rs.getName();
if (db.trim().equals(""))
ve.add(dn);
else
ve.add(db+","+dn);
}
return ve;
}
② 如何在MAVEN中配置Spring的依賴包
1.1 spring-security-core
Spring Security的核心功能是由spring-security-core包提供的,包含了認證和訪問控制功能、支持standalone應用程序、方法級安全和JDBC支持。
<properties>
<org.springframework.security.version>3.2.3.RELEASE</org.springframework.security.version>
<org.springframework.version>4.0.4.RELEASE</org.springframework.version>
</properties>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${org.springframework.security.version}</version>
</dependency>
注意:我們使用的是3.2.x版本的Spring Security--Spring和Spring Security有著不同的版本計劃,所以他們的版本號之間沒有一對一關系。
如果項目使用的是較老版本的Spring,需要注意的時Spring Security 3.1.x版本不依賴於Spring 3.1.x版本,因為Spring Security 3.1.x版本在Spring 3.1之前發布。Spring的計劃是在後續的版本中,使雙方的版本號更為接近,更多細節請查看這個JIRA。我們將在後面的內容中看看這種情況對我們的實際影響。
1.2 spring-security-web
要為Spring Security增加Web支持,需要引入spring-security-web依賴:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${org.springframework.security.version}</version>
</dependency>
這個項目為Servlet環境引入了針對URL訪問控制的相關基礎安全組件和過濾器。
1.3 Spring Security與較老版本的Spring Core之間的依賴問題
如上文所述,這個新的依賴產生一個Maven依賴關系問題,Spring Security的相關jar不依賴於最新的Spring core的jar (而是以前的版本)。這可能使的被依賴的Spring core相關包在類路徑中被配置前在最新的Spring 4.x相關包的前面。
這是如何發生的呢?我們需要了解Maven處理版本沖突的機制,Maven會選擇與依賴樹樹根最接近的版本。在之前的情況中,spring-orm依賴4.x版本的spring-core,而spring-security-core依賴於3.2.8版本的spring-core。因此,spring-orm和sprint-security-web的定義順序就是一個問題,先定義的會有更高的優先順序。最終情況就是,我們的類路徑中會有兩個版本的spring-core。
為了避免這類問題,我們需要在我們的pom文件中明確指定一些Spring依賴,而不依靠Maven隱式依賴機制。我們將在pom的根文件中定義特定的依賴關系,這樣這些依賴關系將會有更高的優先順序。下面例子中,將對所有的Spring核心組件明確定義相同的版本,對於多模塊項目,需要在父配置文件的dependencyManagement屬性中定義。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework.version}</version>
</dependency>
1.4 spring-security-config及其他
要使用豐富的Spring Security XML的命名空間,需要定義spring-security-config依賴:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${org.springframework.security.version}</version>
<scope>runtime</scope>
</dependency>
沒有任何代碼需要在編譯時依賴這個包,所以它的范圍應該定義為runtime。
最後,LDAP、ACL、CAS和OpenID支持需要分別增加各自的依賴包:spring-security-ldap, spring-security-acl, spring-security-cas和spring-security-openid。
③ 我想從LDAP中獲取所有的用戶信息,用ldapTemplate中的search方法 ,請問應該怎麼寫,過濾器 filter怎麼寫
如果你的用戶屬性里有uid
這可以這樣寫 (uid=*)
如果沒有,可以寫任何一個有的屬性,然後屬性值=*
④ 如何配置web-inf/security/ldapbindsecurityrealm.groovy
1.需要的包(除了spring Security的包)
spring-ldap-1.2.1.jar(1.2.1+)
ldapbp.jar
commons-lang-2.4.jar
註:spring-ldap不能用1.2版本,1.2中AbstractContextSource.createContext是包級私有的,spring security的繼承了AbstractContextSource並需要訪問該方法。在1.2.1版本中,這個方法是受保護的。
2.配置文件:
(1)伺服器配置
外部ldap伺服器,指明服務的地址,用戶名和密碼
<ldap-server url="ldap://localhost:389/dc=springframework,dc=org"
manager-dn = "cn=root" manager-password = "111111"/>
內部嵌入式ldap伺服器(依賴於apache ds的包),指定根和要導入的ldif文件的路徑
<ldap-server root="dc=springframework,dc=org" ldif="classpath:users.ldif" />
(2)認證提供者配置
<ldap-authentication-provider user-search-filter="(uid={0})" user-search-base="ou=people" group-search-filter = "(member={0})" group-search-base="ou=groups"/>
(3)UserDetailService配置(只有啟用了remember-me過濾器,才需要配置user-service)
<ldap-user-service user-search-filter="(uid={0})" user-search-base="ou=people"/>
3.認證和授權信息的指定(都存放在ldap中)
(1)認證信息:
用戶名(從匹配模式中獲取)
user-dn-pattern:用戶dn的模式
user-search-filter:用戶名的模式
user-search-base:用戶查找的base
用戶口令
如果使用bind認證,不需要知道LDAP中的口令屬性名稱。如果使用密碼比較的認證方式,需要指定用戶口令對應的屬性名,預設的屬性名是userPassword。
(2)授權信息:
group-role-attribute:用戶許可權的屬性名稱(默認是cn)
group-search-filter:用戶許可權的模式
group-search-base:許可權超找的base
role-prefix:許可權前綴,默認是"ROLE_",如果不需要可以設置成"none"。
4.一個配置文件的示例
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/securityhttp://www.springframework.org/schema/security/spring-security-2.0.1.xsd">
<http auto-config="true">
<intercept-url pattern="/secure.html" access="ROLE_USER" />
<intercept-url pattern="/extremesecure.html" access="ROLE_ADMIN" />
</http>
<!--
Usernames/Passwords are
rod/koala
dianne/emu
scott/wombat
-->
<ldap-server url="ldap://localhost:389/dc=springframework,dc=org"/>
<ldap-authentication-provider user-search-filter="(uid={0})" user-search-base="ou=people"
group-search-filter = "(member={0})" group-search-base="ou=groups"/>
<!-- remember-me需要使用,如果沒有開啟remeber-me Filter,可以不配置user-service -->
<ldap-user-service user-search-filter="(uid={0})" user-search-base="ou=people"
group-search-filter = "(member={0})" group-search-base="ou=groups"/>
</beans:beans>
頂
0
⑤ java框架有哪些常用框架
十大常用框架:
一、SpringMVC
二、Spring
三、Mybatis
四、Dubbo
五、Maven
六、RabbitMQ
七、Log4j
八、Ehcache
九、Redis
十、Shiro
⑥ 急急急~大神幫忙,查不出來數據了!ldap如何查處某個欄位為空的數據,過濾器要怎麼寫
(!test=*)
⑦ 什麼是LDAP伺服器
LDAP(輕量級目錄訪問協議,Lightweight Directory Access Protocol)是實現提供被稱為目錄服務的信息服務。目錄服務是一種特殊的資料庫系統,其專門針對讀取,瀏覽和搜索操作進行了特定的優化。目錄一般用來包含描述性的,基於屬性的信息並支持精細復雜的過濾能力。目錄一般不支持通用資料庫針對大量更新操作操作需要的復雜的事務管理或回卷策略。而目錄服務的更新則一般都非常簡單。這種目錄可以存儲包括個人信息、web鏈結、jpeg圖像等各種信息。為了訪問存儲在目錄中的信息,就需要使用運行在TCP/IP 之上的訪問協議—LDAP。
LDAP目錄中的信息是是按照樹型結構組織,具體信息存儲在條目(entry)的數據結構中。條目相當於關系資料庫中表的記錄;條目是具有區別名DN (Distinguished Name)的屬性(Attribute),DN是用來引用條目的,DN相當於關系資料庫表中的關鍵字(Primary Key)。屬性由類型(Type)和一個或多個值(Values)組成,相當於關系資料庫中的欄位(Field)由欄位名和數據類型組成,只是為了方便檢索的需要,LDAP中的Type可以有多個Value,而不是關系資料庫中為降低數據的冗餘性要求實現的各個域必須是不相關的。LDAP中條目的組織一般按照地理位置和組織關系進行組織,非常的直觀。LDAP把數據存放在文件中,為提高效率可以使用基於索引的文件資料庫,而不是關系資料庫。類型的一個例子就是mail,其值將是一個電子郵件地址。
LDAP的信息是以樹型結構存儲的,在樹根一般定義國家(c=CN)或域名(dc=com),在其下則往往定義一個或多個組織 (organization)(o=Acme)或組織單元(organizational units) (ou=People)。一個組織單元可能包含諸如所有雇員、大樓內的所有列印機等信息。此外,LDAP支持對條目能夠和必須支持哪些屬性進行控制,這是有一個特殊的稱為對象類別(objectClass)的屬性來實現的。該屬性的值決定了該條目必須遵循的一些規則,其規定了該條目能夠及至少應該包含哪些屬性。例如:inetorgPerson對象類需要支持sn(surname)和cn(common name)屬性,但也可以包含可選的如郵件,電話號碼等屬性。
⑧ apache的主要模塊包含哪些內容
mod_access
根據客戶端的主機名,IP地址,或其他特性的客戶端請求提供訪問控制。
mod_actions
該模塊提供了根據媒體類型或請求方法執行CGI腳本。
用到mod_alias模組
提供文檔樹中的主機文件系統的不同部分映射和URL重定向
mod_asis
發送文件,其中包含他們自己的HTTP標頭
mod_auth
使用文本文件的用戶身份驗證
mod_auth_anon
允許「匿名」用戶訪問身份驗證領域
mod_auth_dbm
提供用戶認證使用DBM文件
mod_auth_digest
用戶認證使用MD5摘要式身份驗證。
mod_auth_ldap
允許使用LDAP目錄來存放資料庫的HTTP基本身份驗證。
mod_autoindex
生成目錄索引,自動,類似的Unix LS命令或Win32 目錄的shell命令
mod_cache
內容緩存鍵的URI。
mod_cern_meta
CERN httpd的圖元文件的語義
mod_cgi的
CGI腳本的執行
mod_cgid
使用一個外部CGI守護進程執行CGI腳本
mod_charset_lite
指定字元集轉換或重新編碼
mod_dav
分布式創作和版本控制(WebDAV的)功能
mod_dav_fs
為mod_dav的文件系統提供者
mod_deflate模塊
壓縮的內容,然後傳送到客戶端
mod_dir
提供「結尾的斜線」重定向和服務目錄索引文件
mod_disk_cache
內容緩存存儲管理器鍵入的URI
mod_mpio
轉儲所有的I / O錯誤日誌中。
mod_echo
一個簡單的echo伺服器來說明協議模塊
mod_env
修改傳遞給CGI腳本和SSI頁面的環境,
mod_example
說明在Apache模塊API
mod_expires
生成到期的Cache-Control HTTP報頭,根據用戶指定的標准
mod_ext_filter
通過外部程序發送給客戶端之前,通過響應體
mod_file_cache實現
在內存中緩存靜態文件列表
mod_headers
定製的HTTP請求和響應頭
mod_imap
伺服器端圖像映射處理
mod_include
伺服器解析的HTML文件(伺服器端包含)
mod_info
伺服器的配置提供了一個全面的概述
mod_isapi
在Apache的ISAPI擴展為Windows
mod_ldap模塊
LDAP連接池和結果緩存服務使用的其他LDAP模塊
mod_log_config
記錄向伺服器發出的請求
mod_log_forensic
法醫記錄的請求到伺服器
mod_logio
記錄每個請求的輸入和輸出位元組
mod_mem_cache
內容緩存鍵的URI
mod_mime
聯營公司所要求的文件名的擴展名與文件的行為(處理程序和過濾器)和內容(MIME類型,語言,字元集和編碼)
mod_mime_magic
通過在幾個位元組,其內容來確定一個文件的MIME類型
mod_negotiation模塊
提供內容協商
mod_nw_ssl
對於NetWare啟用SSL加密
mod_proxy
HTTP/1.1代理/網關伺服器
mod_proxy_connect
mod_proxy的擴展名 CONNECT請求處理
mod_proxy_ftp
FTP支持模塊 的mod_proxy
mod_proxy_http
HTTP支持模塊 的mod_proxy
mod_rewrite
提供了一個基於規則的重寫引擎重寫請求的URL飛
mod_setenvif
基於請求的特性,允許設置的環境變數
則mod_so
伺服器在啟動時載入的可執行代碼和模塊或重新啟動時間
mod_speling
嘗試糾正錯誤的URL,用戶可能忽略了資本輸入,並允許一個拼寫錯誤
mod_ssl的
強效加密使用安全套接字層(SSL)和傳輸層安全協議(TLS)
使用mod_status
提供有關伺服器活動和性能
mod_suexec
允許CGI腳本來運行指定的用戶和組
mod_unique_id
每個請求的唯一標識符提供了一個環境變數
mod_userdir模塊
用戶特定的目錄
mod_usertrack
點擊流記錄在網站上的用戶活動
mod_version
版本相關的配置
mod_vhost_alias
提供質量的虛擬主機動態配置
⑨ 關於講web方面的好書推薦
介紹幾本比較經典的。
第一本:《java從入門到精通》(第3版)
【內容介紹】《JAVA核心技術卷2:高級特徵》是Java技術權威指南,全面覆蓋Java技術的高級主題,包括流與文件、XML、網路、資料庫編程、高級Swing、高級 AWT、JavaBean構件、安全、分布式對象、腳本、編譯與註解處理等,同時涉及本地化、國際化以及Java SE 6的內容。《JAVA核心技術卷Ⅱ:高級特徵》對Java技術的闡述精確到位,敘述方式深入淺出,並包含大量示例,從而幫助讀者充分理解Java語言以及Java類庫的相關特性。
【推薦理由】本書是經典的《Java核心技術,卷II:高級特性》的最新修訂版,涵蓋了Java SE6平台的高級用戶界面程序設計和企業特性。與第1卷(涵蓋了核心的語言和類庫特性)一樣,本卷已經更新到了JavaSE6。並且對新內容都作了重點標注。書中所有的示常式序都進行了詳細的設計,用來演示最新的編程技術。並展示針對專業開發者在現實中所碰到的典型問題的最佳解決方案。本書包含有關StAXAPI、JDBC 4、編譯器API、腳本框架、閃屏和托盤API以及其他許多JavaSE6改進特性的新章節。本書聚焦於Java語言中更高級的特性,包括下列內容:流與文件、網路、資料庫編程、XML、JNDI與LDAP、國際化、高級GUI組件、Java2D、JavaBeans、安全、RMI與Web服務、高級AWT、註解、本地方法。
供參考。
⑩ 如何更改OpenLDAP伺服器上的賬戶密碼
windows系統伺服器:右鍵計算機-管理-本地用戶和組-用戶-右鍵重命名修改用戶名,右鍵設置密碼可以進行更改密碼。
Linux系統:若修改root自己的密碼,直接輸入passwd,輸入兩遍新密碼即可。 修改其他用戶,如oracle 的密碼,可直接輸入passwd oracle.,輸入兩遍性新密碼即可。