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

时间:2018-12-07 17:58:11

标签: authentication oauth oauth-2.0 oltu

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

  1. 步骤:

    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();

  2. 步骤:

    OAuthClientRequest oAuthClientRequest = OAuthClientRequest.tokenProvider(OAuthProviderType.GOOGLE)                 .setGrantType(GrantType.AUTHORIZATION_CODE)                 .setClientId(clientId)                 .setClientSecret(clientSecret)                 .setRedirectURI(“ http://localhost:8080”)                 .setCode(requestCode).buildBodyMessage();

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

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

1 个答案:

答案 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中实现)