在球衣的OAuth2CodeGrantFlow中显式的状态参数

时间:2014-01-13 21:29:21

标签: java oauth oauth-2.0 jersey jersey-client

我一直在玩球衣的OAuth2.0客户端支持库。它也像魅力一样。但是我似乎无法找到一种方法来指定在授权请求中发送的state参数。 Jersey为我生成一个随机UUID,让我在获得授权提供者的响应时检索它。在此之前,我提出的唯一选择是手动解析start()返回的URI字符串。但这不应该是对的,对吧?要么我错过了球衣中的东西,要么我错过了状态参数的要点...... 那么你知道在我开始()流之后提取状态参数的任何方法(比我更优雅)吗?或者将我自己的状态变量放在flowBuilder中的方法?

顺便说一句,我正在使用运动衫2.5.1。

编辑以包含代码示例:

final ClientIdentifier clientIdentifier = new ClientIdentifier(CLIENT_ID, CLIENT_SECRET);
final OAuth2CodeGrantFlow codeGrantFlow = OAuth2ClientSupport
            .googleFlowBuilder(clientIdentifier, redirectURI, scope)
            .prompt(OAuth2FlowGoogleBuilder.Prompt.CONSENT).build();        
final String googleAuthURI = codeGrantFlow.start();

如何在那里的某个地方获取/设置状态?

Edit2:以下是泽西岛JIRA https://java.net/jira/browse/JERSEY-2342的功能请求 与此同时,Michal Gajdos的建议对我来说很好。

1 个答案:

答案 0 :(得分:2)

您可以使用OAuth2CodeGrantFlow.Builder#property(...)方法设置state参数:

final OAuth2CodeGrantFlow codeGrantFlow = OAuth2ClientSupport
        .googleFlowBuilder(clientIdentifier, redirectURI, scope)
        .prompt(OAuth2FlowGoogleBuilder.Prompt.CONSENT)
        .property(OAuth2CodeGrantFlow.Phase.AUTHORIZATION, OAuth2Parameters.STATE, state)
        .build();

我同意,这不太方便。如果您有合法的用例来修改构建器/流程,请随时向我们的JIRA提交改进。