我有一個Grails 2.5.3應用程序,目前使用Spring安全插件進行身份驗證。用戶使用用戶名/密碼登錄。如何將OAuth身份驗證與Spring安全聯繫起來
我已經更新了應用程序以支持OAuth身份驗證(使用ScribeJava)。用戶可以單擊將其重定向到OAuth提供商頁面的鏈接,並在成功輸入憑據後將其重定向回我的應用程序。然而,我還沒有能夠將此功能與Spring安全插件綁定,以便當用戶重定向到我的應用(在成功從OAuth登錄後)後,我實際上可以看到他們已經登錄並繼續使用我的所有彈簧安全的好東西,如<sec:ifLoggedIn>
。
有沒有人知道一種方法來做到這一點,或有一個例子,我可以看看?
這是我如何驗證用戶使用OAuth:
//called when user clicks "login using oauth"
def authenticate() {
OAuthService service = new ServiceBuilder()
.apiKey(grailsApplication.config.my.sso.clientid)
.apiSecret(grailsApplication.config.my.sso.clientsecret)
.build(MyApi.instance());
String url = service.getAuthorizationUrl();
return redirect(url: url)
}
//called when oauth provider redirects to my application
def authorization_code() {
def code = params.code
OAuthService service = new ServiceBuilder()
.apiKey(grailsApplication.config.my.sso.clientid)
.apiSecret(grailsApplication.config.my.sso.clientsecret)
.build(MyApi.instance());
println code
OAuth2AccessToken accessToken = service.getAccessToken(code);
String userProfileUrl = grailsApplication.config.my.sso.authdomain+"/userinfo"
final OAuthRequest request = new OAuthRequest(Verb.GET, userProfileUrl);
service.signRequest(accessToken, request);
final Response response = service.execute(request);
println(response.getCode());
println(response.getBody());
render (text: code)
}
以下任何答案對您有幫助嗎? –