我使用Spring Social與Spring Security進行身份驗證,並在我的網絡應用程序中自動創建本地帳戶。如何提供OAuth2 scope
進行身份驗證?如何使用spring-social-security SocialAuthenticationFilter指定OAuth2範圍?
在spring-social-samples中,我看不到scope
應該去哪裏。
<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="/spring-social-showcase/signup"
p:rememberMeServices-ref="org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices#0" />
<bean id="socialAuthenticationProvider" class="org.springframework.social.security.SocialAuthenticationProvider"
c:_0-ref="usersConnectionRepository"
c:_1-ref="socialUsersDetailService" />
爲scope
一個具體的用例是讓用戶與Facebook身份驗證,然後獲得用戶的Facebook的電子郵件(scope="email"
)創建一個本地帳戶。
恐怕這是1.1.0.M4上的失敗。由於:org.springframework.beans.NotWritablePropertyException:bean類的屬性'scope'無效[org.springframework.social.facebook.security.FacebookAuthenticationService]:Bean屬性'scope'不可寫,或者具有無效的setter方法。設置器的參數類型是否與獲取器的返回類型匹配 – Christoph
1.1.0.M4中的屬性名稱已從範圍更改爲defaultScope。請參閱https://github.com/spring-projects/spring-social/blob/1.1.0.M4/spring-social-security/src/main/java/org/springframework/social/security/provider/OAuth2AuthenticationService.java – Christoph