皆さん、
初めて Facebook ソーシャル インテグレーションを使用しています。Spring.io サンプルから関連するコード ファイルを取得し、それを使用して最小限の「Facebook を使用した認証」アプリケーションを構築していました。
「FBを使用してログイン」ボタンをクリックすると、FBページを開くことができます。資格情報 (有効) を入力すると、再びサインイン ページ (/signin) にリダイレクトされます。私が期待していたのは、起こっていない「/signup」にリダイレクトされることでした。FBデータを使用してユーザーのシャドウアカウントを作成しようとしています。
これが私の構成です。
security.xml
<http auto-config="true">
<form-login login-page="/signin" login-processing-url="/signin/authenticate" authentication-failure-url="/signin?param.error=bad_credentials" />
<!-- intercept-url pattern="/admin**" access="ROLE_USER" /-->
<!-- Spring Social Security authentication filter -->
<intercept-url pattern="/signup/**" access="ROLE_ANONYMOUS" />
<custom-filter ref="socialAuthenticationFilter" before="PRE_AUTH_FILTER" />
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider>
<user-service>
<user name="vais" password="123456" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
<beans:bean id="textEncryptor" class="org.springframework.security.crypto.encrypt.Encryptors"
factory-method="noOpText" />
<beans:bean id="passwordEncoder" class="org.springframework.security.crypto.password.NoOpPasswordEncoder"
factory-method="getInstance" />
</beans:beans>
Social.xml
<context:property-placeholder location="classpath:/config/application.properties" />
<facebook:config app-id="${facebook.clientId}" app-secret="${facebook.clientSecret}" app-namespace="socialshowcase" />
<jdbc:embedded-database id="dataSource" type="H2">
</jdbc:embedded-database>
<social:jdbc-connection-repository/>
<bean id="userIdSource" class="org.springframework.social.security.AuthenticationNameUserIdSource" />
<bean id="connectController" class="org.springframework.social.connect.web.ConnectController" autowire="constructor">
</bean>
<bean id="signInAdapter" class="com.mkyong.web.controller.SimpleSignInAdapter" autowire="constructor" />
<bean id="disconnectController" class="org.springframework.social.facebook.web.DisconnectController"
c:_0-ref="usersConnectionRepository" c:_1="${facebook.clientSecret}" />
social-security.xml
<bean id="socialAuthenticationFilter" class="org.springframework.social.security.SocialAuthenticationFilter"
c:_0-ref="authenticationManager"
c:_1-ref="userIdSource"
c:_2-ref="usersConnectionRepository"
c:_3-ref="connectionFactoryLocator"
p:signupUrl="/signup"
/> <!-- TODO: Figure out how to wire this without this name -->
JSPでFBログインを試してセットアップする方法は次のとおりです。
<!-- FACEBOOK SIGNIN -->
<p><a href="<c:url value="/auth/facebook"/>"><img src="<c:url value="/resources/social/facebook/sign-in-with-facebook.png"/>" border="0"/></a><br/></p>
Facebookを使用してログインに成功した後、ユーザーは現在行われている「サインイン」ではなく「サインアップ」にリダイレクトされる必要があります。任意の入力をいただければ幸いです。