簡體   English   中英

如何使用Struts 2 / Spring 3進行HTTP基本身份驗證?

[英]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>

我的示例沒有顯示如何針對數據庫進行身份驗證:如上所述, 使用HibernateSpring Security 3數據庫身份驗證中已經介紹了該方法(由於我現在只需要硬編碼的用戶名和密碼,因此沒有嘗試過)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM