我使用Apache OLTU库实现了OAuth2身份验证。 它可以工作,但我可以手动处理RedirectURL的请求令牌。
步骤:
request = OAuthClientRequest.authorizationProvider(OAuthProviderType.GOOGLE)// authorizationProvider(OAuthProviderType.GOOGLE) .setState(OAuth.OAUTH_STATE) .setResponseType(OAuth.OAUTH_CODE) .setRedirectURI(“ http://localhost:8080”) .setClientId(clientId) .setScope(“ https://www.googleapis.com/auth/drive”) .buildQueryMessage();
步骤:
OAuthClientRequest oAuthClientRequest = OAuthClientRequest.tokenProvider(OAuthProviderType.GOOGLE) .setGrantType(GrantType.AUTHORIZATION_CODE) .setClientId(clientId) .setClientSecret(clientSecret) .setRedirectURI(“ http://localhost:8080”) .setCode(requestCode).buildBodyMessage();
在两步之间,我需要自动处理代码的提取。 我该如何在代码中实现?
我不会在servlet中,而不会在Portlet中。
答案 0 :(得分:0)
问题“该步骤如何在代码中实现?”
要求“我不会在servlet中,而不会在Portlet中。”
答案:
(1)供参考,我将源代码添加到您的源代码中(使用Apache OLTU库)以“自动处理OAuth授权代码的提取”。
// 1. Step
OAuthClientRequest request = OAuthClientRequest.authorizationProvider(OAuthProviderType.GOOGLE)//authorizationProvider(OAuthProviderType.GOOGLE) .setState(OAuth.OAUTH_STATE) .setResponseType(OAuth.OAUTH_CODE) .setRedirectURI("http://localhost:8080") .setClientId(clientId) .setScope("https://www.googleapis.com/auth/drive") .buildQueryMessage();
// Create the response wrapper
OAuthAuthzResponse oar = null;
oar = OAuthAuthzResponse.oauthCodeAuthzResponse(request);
// Get Authorization Code
String requestCode = oar.getCode();
// 2. Step
OAuthClientRequest oAuthClientRequest = OAuthClientRequest.tokenProvider(OAuthProviderType.GOOGLE) .setGrantType(GrantType.AUTHORIZATION_CODE) .setClientId(clientId) .setClientSecret(clientSecret) .setRedirectURI("http://localhost:8080") .setCode(requestCode).buildBodyMessage();
(2)可以参考下面的示例代码
“ demos / client-demo / src / main / java / org / apache / oltu / oauth2 / client / demo / controller / RedirectController.java”
来自GitHub存储库中的Apache Oltu OAuth 2.0 Client and Provider,它是Apache Oltu与Pull Request #10的分支,用于两个新的提交“添加提供者演示和自述文件”。
提供者演示应用程序(来自GitHub存储库上Apache Oltu OAuth 2.0 Client and Provider的“ demos / provider-demo”)允许您运行独立的OAuth 2.0服务器来测试和调试OAuth2身份验证客户端(由您在Portlet中实现)