【发布时间】:2017-08-02 18:46:22
【问题描述】:
我有一个 Grails 2.5.3 应用程序,目前使用 spring 安全插件进行身份验证。用户使用用户名/密码登录。
我现在更新了应用程序以支持 OAuth 身份验证(使用 ScribeJava)。用户可以单击将他们重定向到 OAuth 提供者页面的链接,并在成功输入凭据后将他们重定向回我的应用程序。但是,我无法将此功能与 spring 安全插件绑定,因此当用户被重定向回我的应用程序时(从 OAuth 成功登录后),我实际上可以看到他们已登录并继续使用我所有的 spring像<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)
}
【问题讨论】:
-
以下答案对您有帮助吗?
标签: grails spring-security oauth grails-plugin spring-security-oauth2