![](/img/trans.png)
[英]How do I add HTTP basic auth for a specific endpoint with spring security?
[英]How do I do HTTP basic auth using Struts 2/ Spring 3?
我正在編寫RESTful Web服務,某些API需要用戶身份授權。 由於HTTP基本身份驗證足以滿足我的要求,因此我決定使用它。
我想針對存儲這些憑據的MySQL數據庫表檢查API用戶提供的用戶憑據。
我實際上如何使用Struts 2 / Spring 3實現這一目標?
您可以為此使用spring-security。 我只是按照從http://syntx.co/languages-frameworks/adding-http-basic-auth-to-restful-services-in-java-and-spring/
要針對數據庫進行身份驗證,您可能需要創建自己的身份驗證提供程序。 上有一個示例: 使用Hibernate的Spring Security 3數據庫身份驗證
簡而言之:
1)在pom.xml中添加spring-security:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>3.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>3.1.3.RELEASE</version>
</dependency>
2)將過濾器添加到web.xml:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
(您還需要spring ContextLoaderListener,但是如果您已經在使用spring,它可能已經在您的web.xml中)
3)更新您的spring xml配置
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
...
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans
...
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<security:http auto-config='true'>
<security:intercept-url pattern="/**" access="ROLE_USER" />
<security:http-basic />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<!-- this is an demo example with hardcoded username and password -->
<security:user-service>
<security:user name="..." password="..." authorities="ROLE_USER" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
....
</beans>
我的示例沒有顯示如何針對數據庫進行身份驗證:如上所述, 使用Hibernate在Spring Security 3數據庫身份驗證中已經介紹了該方法(由於我現在只需要硬編碼的用戶名和密碼,因此沒有嘗試過)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.