我有一个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)
}
以下任何答案对您有帮助吗? –