Oauth2身份验证以编程方式处理代码



我使用Apache OLTU库实现了OAuth2身份验证。它可以工作,但我手动处理来自RedirectURL的请求令牌。

  1. 步骤:

    request=OAuthClientRequest.authorizationProvider(OAuthProviderType.GOGLE(//authorizationProvider(OAuthProviderType.gOGLE(.setState(OAuth.OAuth_STATE(.setResponseType(OAuth.OAuth_CODE(.setRirectURI("http://localhost:8080"(.setClientId(客户端ID(.setScope("https://www.googleapis.com/auth/drive"(.buildQueryMessage((;

  2. 步骤:

    OAuthClientRequest OAuthClientRequest=OAuthClientRequest.tokenProvider(OAuthProviderType.GOGLE(.setGrantType(GrantType.OuthoriZATION_CODE(.setClientId(客户端ID(.setClientSecret(clientSecret(.setRirectURI("http://localhost:8080"(.setCode(requestCode(.buildBodyMessage((;

在这两步之间,我需要自动处理代码的提取。我如何在代码中实现这一步骤?

我不是在servlet中,而是在Portlet中。

问题"我如何在代码中实现这一步骤?">

要求"我不是在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/RerectController.java">

来自GitHub存储库的Apache Oltu OAuth 2.0 Client and Provider,这是Apache Oltu的一个分支,带有Pull Request#10,用于两个新的提交"Add Provider demo and README"。

提供程序演示应用程序(GitHub存储库中Apache Oltu OAuth 2.0客户端和提供程序的"demos/provider demo"(允许您运行独立的OAuth 2.0server来测试和调试您的OAuth2身份验证客户端(由您在Portlet中实现(。

最新更新