イントロ:春の両方のフォーム・ログインのためのSecuityと休息トークン認証
Iそれがフォーム・ログインを使用していますLoginUrlAuthenticationEntryPointを使用する既存のWebアプリケーションを持っています。これは正常に動作しています。
ここで、REST/jsonを介して外部サイトにアクセスできるようにするために、リンクの一部が必要でした。私は@RestControllerで注釈を付けられたコントローラを実装しており、それは実行中です。
問題:今
、私はRESTの一部にセキュリティを追加したいです。 Webアプリケーションで2つの認証:フォームログイン(Web)とトークンベース(REST)を受け入れるようにします。
- ウェブ
- [既存およびOK]ログインフォームからユーザー/パスワードを受け入れるREST(JSON) 私は、HTTPのような送信を考えています:/ localhostを:8080/myappの入手トークン& UN =ユーザー& PWを? = passwordそれが正常に認証されると、それはトークンを返します。それ以外の場合は、エラーメッセージが返されます。 返されたトークンを使用して、サーバーへの要求にアクセスします。
現在のSpring Webセキュリティに影響を与えることなく、トークンを使用してRESTセキュリティを追加する必要がありました。
のApp-コンテキストXML:
...
<security:http use-expressions="true" create-session="always" entry-point-ref="loginUrlAuthenticationEntryPoint">
<!-- Intercept URLs here -->
<security:custom-filter ref="myAppUsernamePasswordAuthenticationFilter" position="FORM_LOGIN_FILTER" />
<security:logout logout-success-url="/" delete-cookies="JSESSIONID" invalidate-session="true" />
<security:session-management session-authentication-error-url="/?error=alreadyLoggedIn">
<security:concurrency-control max-sessions="1" expired-url="/sessionExpired" error-if-maximum-exceeded="true" />
</security:session-management>
</security:http>
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref='myAppAuthenticationProvider' />
</security:authentication-manager>
<bean id="myAppAuthenticationProvider" class="com.myapp.security.MyAppAuthenticationProvider" />
<bean id="myAppUsernamePasswordAuthenticationFilter" class="com.myapp.security.MyAppUsernamePasswordAuthenticationFilter">
<property name="authenticationManager" ref="authenticationManager" />
<property name="authenticationSuccessHandler" ref="myAppAuthenticationSuccessHandler">
</property>
<property name="authenticationFailureHandler" ref="myAppAuthenticationFailureHandler" />
</bean>
<bean id="myAppAuthenticationSuccessHandler" class="com.myapp.security.MyAppAuthenticationSuccessHandler" />
<bean id="myAppAuthenticationFailureHandler" class="com.myapp.security.MyAppAuthenticationFailureHandler" />
<bean id="loginUrlAuthenticationEntryPoint" class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
<property name="loginFormUrl" value="/" />
<property name="forceHttps" value="false" />
</bean>
私はRESTの一部のトークンベースのセキュリティのために何を追加する必要がありますか?
ありがとうございます!